半个PostgreSQL DBA,热衷于数据库及分布式技术。 - https://github.com/ChenHuajun - https://pan.baidu.com/s/1eRQsdAa
最近做项目,发现64位的java程序居然比32位的慢很多,后来找到一篇文章(日文)有解释这个事情。链接如下: http://software.fujitsu.com/jp/technical/interstage/apserver/guide/pdf/jvm32or64.pdf 看来如果32位内存地址空间足够用的话,没必要赶时髦非用64位程序。
偶然看了几篇关于数据库分页性能优化的文章。概括起来主要有以下几个策略。 1,缓存结果 缓存有资源消耗,命中率和数据一致性等问题,其利弊需要根据使用场景进行权衡。 2,利用索引迅速跳过offset之前的记录 对单个分页请求来说,一页的返回记录数通常很少,但要跳过的记录数可能会非常多。
前段时间在公司小范围做了一个关于PG事务实现的讲座,最后总结了一个摘要性的东西,分享一下,欢迎拍砖。 背景说明: 以ACID为特征的事务是关系数据库的一项重要的也是基本的功能。
最近在参与PostgreSQL中国社区的文档中文化。PG的文档是一堆基于docbook的sgml文件。这些sgml可以通过工具转成html,pdf等各种不同格式。 这即是docbook所倡导的“内容和格式的分离”。
去年的时候无意中发现,Npgsql在连接入池时,只是简单的调用了unlisten和deallocate清理会话,这可能会导致一些会话属性(比如临时对象)残留。于是提交了一个Patch,对于支持Discard语句的Server,使用Discard All清理。
PostgreSQL支持很多认证方式,Kerberos是其中之一。本文通过一个实例介绍PostgreSQL的Kerberos认证环境的配置。 1. 准备 1.1 Kerberos原理 如果你还不清楚Kerberos是什么,强烈建议把下面2篇文章仔细看一遍,可以完整地了解Kerberos的原理和相关概念。
编译psqlODBC时,可以指定是否使用libpq。本来以为使用libpq时,psqlODBC会像ecpg那样,会对libpq的api进行完整的封装。但是看过代码后发现,事情不是这样。psqlODBC只在一些特定的场景下把lippq当作一个用于建立连接的工具,之后就把libpq中的socket取出来直接用。
SSD的IO性能优于HDD,特别是随机IO。现在用的PC里就有一块普通硬盘(WD3200AAJS)和一块SSD(OCZ-VERTEX4),下面实际测一下,它们在作为数据库存储时的表现。
根据并发事务的实现方式和外部表现,可以归纳出下面几种事务处理模式(近似的)。1)读未提交读不加锁,写加排他锁。写锁在事务结束时释放。读写不冲突,但可能出现脏读。2)读已提交(基于锁)读加共享锁,写加排他锁。
今天遇到个Case。PG7.3的dump数据在PG8.1上恢复。结果报错。就像下面这样: psql mydb ... ERROR: invalid type name "tb1.id%TYPE" CONTEXT: compile of PL/pgSQL function "myfunc" near line 7 我没有那个dump文件,根据错误消息判断原因应该这样的: 函数myfunc的定义中引用了"tb1.id%TYPE",但在db.sql中表tb1的定义语句在函数myfunc定义的后面,导致创建myfunc函数的SQL语句执行失败。
MySQL的Innodb也采用了MVCC机制提高并发事务的性能,但在可串行化隔离级别下,测试发现它是完全基于锁的。下面是详细测试结果。测试方法方法请参考笔者之前的文章:并发事务下各数据库外部表现实测之一(SQL Server篇)http://blog.
PostgreSQL的事务也是基于MVCC实现的。支持3种隔离级别,读已提交,可重复读和可串行化。但用户设置读未提交并不会报错而是被映射到读已提交,这是不违反SQL规约的。PostgreSQL的可重复读相当于Oracle的可串行化,即SI。
Oracle采用MVCC技术进行事务隔离,它只支持2种隔离级别,读已提交和可串行化,设置其他隔离级别会报错。这种基于MVCC的可串行化也被称为SNAPSHOT ISOLATION(SI)。
最近调查了一下从数据库中增量抽取数据的几种方案。下面是一个比较粗的结论。 方法1:基于时间戳 以某个时间字段为条件,检出新增数据。 适用条件:表中有时间字段,并且是事件型的数据,不需要反映数据的删除和更新。
DB-Engine根据数据库的受欢迎程度每个月发布一次数据库排名。根据最新(2013/9)的统计结果,最受欢迎的前十个数据库如下 来源:http://db-engines.com/en/rankingDB-Engine的统计方法可参照下面 http://db-engines.com/en/ranking_definition 其中第一项就是通过搜索引擎google和bing统计相关关键字的匹配页面数。
Jelastic是一个是一个在线的支持 Java 和 PHP 的 PaaS 服务平台。看到有网友介绍最近试用了一下。发现真的很好用的。总结下来有下面几个特点 环境创建画面: 易于构建 在环境创建画面(就一个画面,而且很直观)上鼠标点点就可以轻松完成环境搭建。
Jelastic是一个在线的支持 Java 和 PHP 的 PaaS 服务平台。它每个月都会统计一次在Jelastic上使用的同类开源软件的使用份额。最近一次的统计结果(2013/8/5)显示,MySQL依然毫无争议地是目前使用最广的开源数据库。
开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列" 经常,我们在启动应用的时候发现系统需要的端...
PostgreSQL服务端的日志里有时会残留一些这样的消息。意思是说客户端的socket意外终止了。 LOG: could not receive data from client: Connection reset by peer. 或中文的 LOG:无法从客户端获得数据: 出现这样的消息有2个可能的原因 1)客户端进程意外结束了 2)客户端进程没有关闭连接就退出了 其中第2点有时比较隐蔽。
当同时有多个事务访问相同数据时,DBMS会采取锁或MVCC的机制确保数据的完整性。反映到应用程序上的表现可能就是等待或报错。不同DBMS因为采取的机制或策略不同,其外部表现也有很大差异。
这可能是个很老套的话题,但不管怎么说还是有用的。姑且把配置方法贴出来吧。 装VS2010时,会自带一个SQL SERVER 2008 EXPRESS,这比正式的SQL SERVER 2008版本小多了,本文就以EXPRESS版为例进行说明。
1. 概述 使用PostgreSQL一段时间后,就发现PG对数据类型处理上有个特点,基本上都以字符串形式进行数据的转换和传输。对于非文本型将其存储格式转化为字符串形式,或反过来将字符串解析为特定数据类型往往依赖上下文环境(locale,数据库参数等)所规定的格式。
1.概述 随着数据库的运行,存储空间里会产生一些无用的数据,需要进行清理。 产生这些无用数据的原因有: ? 行被删除 ? 插入行的事务终止 ? 由更新产生的旧的行版本 需要回收的存储空间主要包括以下几个方面: ? 行版本(占用空间最大) ? 行版本指针(占用空间最小) ? 索引项 2.回收方法 2.1 表的单页清理 通过SELECT,UPDATE和DELETE访问表时,会触发表的单页清理。
1.cmin和cmax是什么 PG中每个表都包含了一些系统字段,其中包括cmin和cmax。 cmin:插入该元组的命令在插入事务中的命令标识(从0开始累加) cmax:删除该元组的命令在插入事务中的命令标识(从0开始累加) 可以在Select命令的输出列表中显式地指定系统字段。
深度优先遍历和广度优先遍历 以前做过一个XQuery的项目,其中对Path式的执行采用了深度优先遍历算法。现在想想,还可以考虑广度优先遍历。它们的对比如下:可以把节点A匹配Path子式后得到的节点看作节点A的子节点,如果该Path子式不是最后一个Path子式,则这些子节点是中间节点。
关于软件设计的方法,目前想到的有以下几点。 1)自顶向下 先整体再局部,粒度由粗到细。在设计的同一阶段要再同一粒度上考虑问题不要过早地考虑细节以免受干扰。 2)自底向上 在向细节不断精化过程中,可能会发现上层的问题,这时需要对上层设计进行优化。
关于BitTorrent 协议的几点感想 1) 使用文件info的hash值作为文件的id(即Info_hash) 为什么不使用顺序编号或者GUID之类的东西呢? 如果采用顺序编号,谁来编号,发布者?还是某个服务器?如果是发布者,两个不同的发布者就不能保证编号不重复。
今天刷机时意外发现了一个超级技巧:大家都知道Zaurus刷机时,一会要拔电源电池一会要插电源电池,手还要同时按住1~2个键,比较麻烦。其实有个简单的方法:电源和电池一直插上不要拔(其实电源和电池随便只要插一个就可以了,只不过为了保险起见还是都插上的好,万一电池中途没电了呢),打开电池盖,按住模式键(比如 D+M键)的同时,用触摸笔点一下Zaurus背后的Reset键就行了。
skykiker 2009/5/31 本文简单分析uboot for zaurus(即pdaXrom r198版的uboot)的安装和引导过程。其中涉及到Zaurus的OK刷机模式,关于该模式的说明请参考我的另一篇文章《Zaurus的4种操作模式详解》。
Zaurus的4种操作模式详解 skykiker2009/5/29 Zaurus启动时可以通过按键进入下面4种不同的模式。1)正常操作模式 这个不用多讲了。
uboot for zaurus的编译 skykiker 2009/5/28 高版本pdaxrom(比如r198)使用uboot进行引导。本文介绍一下这个用在zaurus上的pdaxrom修订版的uboot的编译过程。
Java中由于有垃圾收集器(GC)自动回收资源,所以一般情况下不需要担心内存泄漏的问题。这也是Java相对C/C++而言开发简单高效的重要原因之一。想必调试过C/C++内存泄漏障害的人都深有体会。
u-boot-1.3.4的start.S代码分析 代码:u-boot-1.3.4\cpu\arm920t\start.S本段代码是uboot的stage1,主要作以下处理:1)设置CPU为SVC32模式同时屏蔽IRQ,FIQ中断 mrs r0,cpsr bi...
因为想用eclipse学习skyeye代码,而我的本本太慢了,无法想象在VMWare跑eclipse会是什么样子。所以决定重新在cygwin上装一个skyeye.环境:OS: XP SP3skyeye: 1.
COME FROM :milw0rm.com ARM GCC Inline Assembler PaperAbout this DocumentWritten by batched ~ batched@gmail.
前言: 以前用ARM的 IDE工具,使用的是ARM标准的汇编语言。现在要使用GNU的工具,当然要了解一点GNU ARM汇编的不同之处。其实非常的简单,浏览一下文档然后再看看程序就完全可以搞定了,或者你硬着头皮看GNU ARM的汇编程序,用不了多少时间你就就可以无师自通了。
安装skyeye 1)下载必要的软件,我是在VMWare上建的环境,需要准备好下面这些软件 ARM-Linux的交叉平台编译工具arm-elf-toolshttp://www.