PostgreSQL 8 正式发布
2009-09-26 17:54:30 Administrator

2008年2月4日,PostgreSQL全球开发组宣布高性能的面向目标的数据库管理系统 PostgreSQL 8.3版发布。来自18国家和地区的几十名开发人员为新版本的PostgreSQL贡献了超过280处更新,这个版本的一系列新的和改进的特性,对应用程序设计人员、数据库管理员、数据库用户都极大地增强了可用性。

“开源数据库 PostgreSQL持续的发展给了用户一个发布非商业化数据库的选择,可以使用户节约费用、提升性能和提高生产效率。PostgreSQL 8.3版是一个令人印象深刻的新版本,我们鼓励我们世界各地的客户去使用它”,Sun公司的执行副总裁Rich Green先生说道。8.3版比以前的版本提供了更强大的性能一致性,它保证了一年52周,每周7天,不论是负载高峰时刻还是非高峰时刻,均能提供类似近期在性能测试中表现的一样的高性能。主要的性能增强内容包括:

* 堆内索引技术(HOT),它对更新频繁的表最多可减少3/4的系统开销。
* 负载分布式的检查点功能,减少了检查点功能对系统响应时间的影响。
* 可自动执行的后台写入程序的自我调节功能。
* 对部分事务执行时的异步提交功能可大幅加快响应时间。

这些改变也大大地提高了数据库的事务处理的能力,根据不同的工作负载,可提高性能5%至30%之间。
“PostgreSQL变得更加智能了”,PostgreSQL核心开发组成员Bruce Momjian解释说。
PostgreSQL 是第一个实现同步扫描的开源数据库,该功能极大地减少了数据挖掘时的I/O次数。Windows平台的开发组现在已经可以用 Visual C++编译PostgreSQL,这也提高了PostgreSQL在Windows平台的稳定性和性能,也使Windows的开发人员更方便参与 PostgreSQL的相关项目。新增了新的日志选项和减少了系统状态收集器的开销也使得监控服务器的状态变得更加容易。

当然,对应用程序开发人员来说,没有提供很多新特性就不是一个全面更新的PostgreSQL了,新的特性包括:
* 对于SQL/XML标准的支持, 包括XML的导出。
* 全文搜索:高级全文搜索工具TSearch2现在已嵌入系统核心中,同时管理更加方便,增加了新的语言和字典。
* GSSAPI和SSPI认证的支持。
* 新的数据类型:UUIDs、ENUMs和复合类型的数组。

“ 我们使用PostgreSQL服务器对我们达300G的用户数据库执行每秒超过18000次的查询,并且这些用户数据每月还在上升,”社交类(SNS)网站MyYearbook.com的CTO技术总监Gavin Roy说道,“我们对HOT功能、共享缓冲的扫描提升和集成Tsearch索引功能都感觉很兴奋。初步的测试显示8.3版本将提高我们数据库的负载能力,缩短系统响应时间。我们真的很期待新版本的发布。”

除了很多的新功能外,一些附加的模块也已完善并随着8.3版本的发布而发布1.0版本。这些模块包括SNMP支持、PL/Proxy、pgPool2,以及一个图形化的存储过程调试器Bucardo,还有名为pgBouncer的连接缓冲池。这些模块现在都已可以使用。在8.3版本中还有其他一系列辅助功能和改进的地方,这些都使PostgreSQL成为一个更加强大的数据库平台,可浏览相关新闻发布稿以浏览更多细节

新版本特性列表
下列列表包括了8.3版本的大部分但不是全部的新特性。由于有大量的新特性,根据用途进行了分组,说明比较简洁。如想了解详细情况,可以浏览PostgreSQL文档和发布声明。想要浏览一个简洁紧凑的格式,可浏览特性阵列表(仅英文)。

升级提醒
为了保持PostgreSQL项目很高标准的数据完整性和可靠性,在8.3版本中我们清理了一些数据类型转换功能。部分用户在升级一些版本很老的且在开发时对数据类型比较不关注的应用时,特别是那些几年前发布的版本,这个更改可能会导致一些问题的发生。对要升级老的应用或是对他们的应用或是存储过程代码觉得繁杂的用户应该在升级前多做一些测试后再升级他们生产系统。请浏览发布声明以获得更多信息。

性能

性能一致性
这些特性保证了PostgreSQL在负载变化时均能提供一致的响应时间:

HOT
堆内索引技术(HOT)对频繁更新的数据表极大地减少了数据库维护的开销,减少了需Vacuum清理的次数,提高了应用程序的处理能力。

异步事务提交
允许COMMIT指令不必等待物理磁盘写入后就返回控制的能力,这有助于在系统出现问题时可能会丢失一些事务时会更快地做出响应。

负载分布式的检查点功能
检查点的自调节功能:延迟或分散检查点功能将减少执行检查点功能对系统响应时间的影响。

即时后台写入策略
后台写入程序可以根据最近的数据库运行情况统计来预测有多少缓冲需进行清理然后进行自动调节。

速度提升
许多新特性对一些特定的操作大大地提高了速度,包括:

提高恢复时间
通过有效的改进,预写式日志在恢复时的I/O次数减少一半以上。

记录存储时的环形缓冲
通过减少缓冲写入磁盘的次数提高组合查询的速度。

快速的LIKE/ILIKE比较
提高了部分内容匹配的比较速度,尤其是在多字节编码的内容情况下。

Top-N 排序
极大地提高了查询中含LIMIT时对结果的搜索速度。

延迟XID赋值
允许PostgreSQL不再给只读查询分配事务ID,这样对主要为读操作或是只读数据库的处理能力有显著提高。

函数的开销
允许用户通知查询规划器预测函数的执行开销和返回的记录行,这样来达到更合理查询规划。

大型数据库
部分改进允许用户使用PostgreSQL运行很大型的数据仓库应用。

同步扫描
允许多个用户对含大数据量的表进行同步检索,极大地减少了总的 I/O 次数。

L2级缓冲扫描保护
对CPU中的缓冲过度清理会导致并发查询的变慢,新的代码对此进行了优化。

可变大小字段辅助字节的减少
对大多数可变大小的字段减少了辅助控制字节,这最多可减少20%的数据库大小。

Windows平台的性能
是的,没有忘记Windows平台下的用户,8.3版本也最终允许Windows成为一个第一类别的平台:
MS Visual C++ 编译支持。允许PostgreSQL的源代码直接使用微软公司的C++编译器,不必再使用第三方的MinGW工具集,这提升了Windows平台下PostgreSQL的性能和稳定性。

后台启动代码重新设计
大大减少了postmaster程序对内存空间的需求,允许在Windows下更多进程同时运行。

管理
虽然PostgreSQL在管理的易用性方面已超过不少商业化数据库,当然总还是有提升的空间。因此,我们又为8.3版本增加了一些可使管理变得更简单容易的功能,也可使数据库管理员可获得更多的信息:

CSV格式的日志输出
将日志输出至一个可以加载至数据库的文件中可以使得创建特别审计以及性能分析工具变得很容易。

SSPI和GSSAPI支持
Kerberos认证现支持工业级安全API:Windows平台下的SSPI和Unix和Linux平台下的GSSAPI,使得将PostgreSQL集成至一个大型企业网络中更容易。

函数中GUC 设置
允许在函数创建时嵌入GUC设置。这对类似函数在创建时定义搜索路径尤其有帮助,这也加强的安全性。

多个自动清理程序
允许配置PostgreSQL的同时运行清理维护进程数,这使得对有上千个数据表的应用其自动清理进程变得可行。

pg_standby
一个管理工具使得配置即时待命的服务器(热备份)更加简单。

ORDER BY Nulls First/Last
允许创建含有NULL值并且可指定NULL在前或是在后的索引。

开发人员
应用程序开发
很多的改进帮助PostgreSQL 8.3版本可与很多领先的商业化数据库相媲美,尤其是在支持复杂、多层的数据库应用,包括:

全文搜索
TSearch2作为领先的全文检索工具,现在已集成至系统核心代码中,并且有了一个更简洁的API。这也使TSearch2更加易于使用和扩展至新的语言、字典和权重分析系统。

规划失效处理
在数据表被更新后,允许通过应用程序调用来主动清理规划器的查询规划,也可以由系统自动丢弃当前的查询规划。

可更新的游标
游标现在支持WHERE CURRENT OF关键字,这使得基于游标的应用设计更加具有弹性。

新的数据类型
XML支持
新的XML数据类型全面支持SQL/XML的ANSI SQL:2003规范,包括格式检查、数据类型操作、SQL/XML发布和XPath查询。8.3版本也包括一些用于XML数据输出的附加功能:

UUID
这个新的128 位数据类型与最常用的GUID和UUID生成器相兼容,主要用于分布式应用程序设计。
复合类型数组
现在的版本中可以创建复合类型数组(即单个类型返回多列内容,例如一个表类型或是一个用户自定义类型)。

枚举
PostgreSQL现在支持可预定义的一系列的可能数值的枚举字段。这使得从MySQL向PostgreSQL迁移更加容易。

存储过程
两个新的特性扩大了PostgreSQL中最流行的存储过程语言PL/pgSQL的用途:

表功能支持
PL/pgSQL这个最流行的存储过程语言现在支持一个简化的记录行返回功能的语法。
PL/pgSQL中可前后滚动游标的使用,PL/pgSQL现在支持滚动游标,这样就可以在PL/pgSQL存储过程中执行复杂的记录修改功能。

附加软件
为了保持PostgreSQL主程序在发布时不至于变得很大,且便于维护,很多重要的工具软件没有随着PostgreSQL核心代码同时发布,在这几百个 PostgreSQL的附加模块中,一部分是支持数据复制、提高可用性、提供不同编程语言接口、应用程序集成或是一些正在实验中的领先功能,它们中的大多数都可从pgFoundry网站浏览到。下面所列的一些软件是与PostgreSQL 8.3版本一道发布的,或是在8.3版本发布时达到专业水准,包括几个数据复制系统,它们根据8.3版本的变化也修改了它们的复制接口:

pgBouncer
这个多线程的连接池允许单个PostgreSQL数据库服务器支持最多100,000个应用程序连接。

PL/Proxy
一个分布式的、可伸缩的表接口。

pgSNMP
一个与标准兼容PostgreSQL的SNMP接口,简化了与监控网络的大型服务器的集成。

SEpgsql
一个基于SELinux模型和策略开发的安全扩展软件,它允许应用统一的SELinux策略来运行操作系统和数据库软件。

PL/pgSQL Debugger
一个新的图形化的接口软件,它支持交互式调试或是单步执行PL/pgSQL存储过程。

pgPool-II
基于pgPool上开发的新的数据复制查询代理软件,增加了数据分区功能。

Bucardo
这是PostgreSQL第一个多主异步数据复制系统,现在已可使用。

CyberCluster
这个新的开源项目集成并改进了几个已存在的PostgreSQL集群工具软件,如pgCluster 和pgPool 。

Slony-I
2.0版本的Slony-I是我们最流行的数据复制系统,现在使用PostgreSQL 8.3版本中新的复制函数接口。

此次的发行版本加入了许多主要的功能:
* 全文搜索功能已集成到数据库核心之中
* 对于SQL/XML标准的支持, 包含了新的操作符和xml数据类型
* 枚举数据类型ENUM
* 复合数据类型的数组
* UUID数据类型
* 加入了在排序时对NULL值出现先后的控制
* 可更新游标
* 可设置函数级的服务器配置参数
* 用户自定义数据类型已可使用类型修饰符
* 表定义改变或统计信息更新后自动重设已缓冲查询的查询方案
* 日志及统计信息收集上的大量改进
* 使用于Windows的SSPI认证支持
* 多进程并行自动清理,以及其他自动清理的改进
* 完整的PostgreSQL发行系统已可使用Microsoft Visual C++编译

以下列出了一些主要的性能改进,其中大部分都无需由用户改动或调整而自动达成:
* 异步提交可以在事务提交时延迟写入预写日志
* 检查点写入可分散与一个较长的时间端从而平滑每个检查点的IO峰波
* “元组堆叠”(Heap-Only Tuples, HOT)加速了大多数UPDATE和DELETE语句的空间再利用
* 及时后台写入策略(Just-in-time background writer strategy)提高了磁盘写入效率
* 对于只读事务使用非持续事务ID减少了运行开支和数据库清理需求
* 每元组和每字段的存储开支得到缩减
* 大型的顺序扫描的不再冲刷常用缓存页
* 并发的大型顺序扫描可共享磁盘读取操作
* ORDER BY ... LIMIT可以无需排序操作
    
其中在性能方面包含以下令人兴奋的功能:
Heap Only Tuples
BGWriter Autotuning
Asynchronous Commit
Spread Checkpoints
Synchronous Scan
“Var-Varlena”
L2 Cache Protection
Lazy XID

同样对PostgreSQL开发者和管理员来说也包含以下一些很有用的功能:
CSV Logging
SQL/XML
MS Visual C++ support
ENUMs
Integrated Tsearch
SSPI & GSSAPI
Composite Type Arrays
pg_standby

在此版本中,用户可通过Stack Builder安装额外驱动程序、模块及其他软件来完善PostgreSQL的安装。至于在Windows下的表现不如在Linux和Unix下,这是必然,凡是多进程方式运行的程序都会这样。Linux和Unix下生成一个进程的代价比较低,而且Linux和Unix为进程间通讯提供了多种方面的设施。而Windows下则更偏向于线程模式,Windows下生成进程的代价比较大,而且进程间通讯的设施也不及Linux和Unix。

PostgreSQL开发组明确声明不会开发基于线程模型的PostgreSQL版本。所以其在Windows下的表现估计永远不及在Linux下颌Unix下的表现。但PostgreSQL自8.0版本以来,一直都很重视Windows平台。对于最新的8.3版本而言,Windows平台的开发组现在已经可以用Visual C++编译PostgreSQL,这也提高了PostgreSQL在Windows平台的稳定性和性能。以前是用MinGW工具集编译的。PG以前是注重特性,性能不及MySQL等开源数据库,但是现在这个问题已经不存在了。PG现在的性能已经很出色了,而且还在继续改进中;且采用BSD授权,基本没有什么限制,相信会有更多的用户和企业选择它。

PostgreSQL 8.3.23 系8.3版本之绝版,于2008年2月4日发布,这一版本也是Greenplum DB 5.0版本的基础版。

更多信息参考:
与其他版本的功能对比
版本发布信息


2009-07-01,PostgreSQL 8.4版发布,兑现了PostgreSQL全球开发组对全球最为功能强大的开源数据库的持续快速开发。该版本包含一系列的功能增强用于使数据库管理、查询、数据库编程等比以前更加简单,在8.4版本中多达293处新增或改进,这也给你下一个项目采用PostgreSQL提供了更多的理由。

在8.4版本中,更新内容最多的地方是提高管理和监控系统运行的工具或指令。每一个用户都会有他们喜欢的特性,来让每天的PostgreSQL的管理工作更加简单和更有效率。

“我们已使用PostgreSQL有七年了,我们的确很期待8.4版本中的新特性,特别是列级权限控制、分数据库的编码设置、GIN索引的局部匹配以及用户自定义的异常,” 来自ZooLoo.com公司的技术总监Jeffrey Webster说道, “PostgreSQL允许我们的数据在快速增长后而不必降低数据集成性。”这些最引人关注的增强功能之中包括:
* 并行方式进行数据恢复,最高可提高至原来8倍速度
* 按列进行权限控制,允许对敏感数据进行更加细致的授权控制
* 针对每一个数据库进行不同编码区分,这尤其在多语言环境下非常有用
* 在线升级,通过pg_migrator功能进行在线快速升级,允许从8.3至8.4升级时而不必会有较长的停机时间
* 新的查询监控工具,从而给管理员对查询的运行以更多的参考信息

PostgreSQL 8.4版通过使用ANSI SQL2003标准中的窗口函数、公共表表达式和递归查询使得数据分析更加容易。“这些查询结构的增加充分地展示了PostgreSQL的查询能力,它允许用户在单个查询中得出很有意思的结果,而这在以前是不可能实现的”。来自Truviso公司的创始人Sailesh Krishnamurthy评价道,而对存储过程的增强,如缺省参数和可变数量参数的功能实现,使得服务器端的编程更简单和简洁。

新版本也提升了应用程序的性能,来自威斯康星州法院的数据库管理员Kevin Grittner评论道,“PostgreSQL在每一个主要版本中都提升了性能,8.4版本中增加了好几处优化,如半联合和反联合查询,它们大大降低了我们查询请求量最多的查询的运行时间”。这些更新的特性也意味着8.4版本将可能服务更多的用户,如OpenStreetMap项目。“当我们计划为 OpenStreetMap API开发一个新版本时,很明显需要一个世界级的数据库系统,它不仅要具备所需要的一切特性,同时也要在规模快速扩大时也可以运行得很好才行,虽然有很多开源数据库可供选择,很明显,PostgreSQL才是我们的选择。” 来自OpenStreetMap公司的系统管理员Tom Hughes评价说。

PostgreSQL 使用BSD版权,它只要求对有版权的源代码保留其版权和授权的信息即可。由于这个经OSI认证的版权不限制PostgreSQL在商业环境和有版权的应用程序中使用,因此被公认为是非常有灵活性和对商业应用是友好的。加上有多个公司的支持和源代码归属公共所有,BSD的版权使得PostgreSQL在那些希望在自己的产品里嵌入数据库的厂商中很流行,因为他们不用担心费用、嵌入软件的版权锁以及版权条款的改变。


该文章最后由 阿炯 于 2024-01-13 16:17:44 更新,目前是第 2 版。