初试PostgreSQL

+----------------------------------------------------------------------------------------+
PostgreSQL  对象->关系型数据库管理系统(有一段时间被称为Postgres95)是由伯克利写的POSTGRES软件包发展而来.经过十几年的发展,PostgreSQL是世界上可以获得的最先进的开放源码的数据库系统,提供了版本并行控制,支持所有的SQL构件(包括子查询,事务和用户定义类型和函数),并且可以获得非常广阔范围的(开发语言)绑定(包括C++,JAVA,perl和tcl,和python)

PostgreSQL是自由免费的,并且所有的源代码都可以获得.
+----------------------------------------------------------------------------------------+
PostgreSQL的开发团队主要为志愿者,他们遍布全世界进行联系,这是一个社区开发项目,他不被任何公司控制.
伯克利的POSTGRES项目:
Michael Stonebraker领导的POSTGRES项目是由防务高级研究局项目局(DARPA),陆军研究办公室(ARO),国家科学基金(NSF),以及ESL,Inc共同赞助的.并且在1988年被推出!
+----------------------------------------------------------------------------------------+
PostgreSQL发展历程
7.1继承6.5之后的有一个巨大的变化,他首先引入了预习式日志的功能.这样,事务就拥有了完善的日志机制,可以提供更好的性能.以及提供实现更优良的备份和灾难恢复的能力(比如联机热备份和宕机后的自动恢复).其次是对文本类型的长度不再限制,从而很大程度上解决PostgreSQL的大对象的问题.

PostgreSQL可以在window下运行,事务保存点功能,改变字段的类型,表空间即时恢复:即时恢复允许对服务器允许对服务器进行连续的备份.你既可以恢复到失败那个点,也可以恢复到以前的任意事务.

PostgreSQL
HoT standy功能.
+----------------------------------------------------------------------------------------+
PostgreSQL在国外很流行
在日本是仅次于apache的开源软件
+----------------------------------------------------------------------------------------+
PostgreSQL数据库是多进程的架构.每一个客户连接都有一个服务进程为其进行服务,也有共享内存,这一点是与Orancle数据库是相似的.
PostgreSQL使用一种客户端/服务器的模式.一个服务器进程,他管理数据库文件,接受来自客户端与数据库的连接,并且代表客户端在数据库上执行操作.数据库服务器程序叫做postgres.
PostgreSQL服务器可以处理来自客户端的多个并发请求.因此,它为每个请求启动("fork")一个新的进程.从这个时候开始,客户端和新服务器进行都不必进行最初的postgres进程进行通讯.因此,主服务器总是在运行,等待连接,而客户端以及其相关联的服务器进程则是起起停停.
+----------------------------------------------------------------------------------------+
PostgreSQL与Orancle数据库以及MySQL的INNODB引擎最大的不同,是没有回滚段.
PostgreSQL每个表的内部都有一个transaction id(xid,4个字节)字段.
每次更新数据时,并不会删除旧的数据行,而是产生新的数据行,新的数据行的xid字段填写当前的transaction id,而每次发生一次事务transcaction id都会加上1,这类似Orancle的SCN号.查询时,如果发生一行的xid比当前的xid新,则表明这个行的数据是新事务,则跳过.这样只是返回等于当前xid的数据行,这样就实现了数据的一致性.

当然删除掉这些,仍然会占用磁盘空间,这是PostgreSQL提供了vacuum命令手动或自动去清除这些过期数据.
+----------------------------------------------------------------------------------------+
PostgreSQL和orancle是进程模式.MySQL是进程模式
进程模式对多CPU利用率比较高.
进程模式共享数据需要用到共享内存,而县县城模式数据本身就是在进程空间都是共享的,不同线程访问只需要控制好线程之间的同步.

线程模式对资源的消耗比较少.
所以Mysql能支持远比orancle多的更多的信息
对于PostgreSQL的来说,如果不实用连接池软件,也存在这个问题,但PostgreSQL中有优秀的连接池软件,例如pgbouncer和pgpool,所以通过链接池可以支持很多的连接.
+----------------------------------------------------------------------------------------+

posted @ 2012-09-15 23:28  sgsheg  阅读(336)  评论(0编辑  收藏  举报