《PostgreSQL 9.0性能调校》一一第1章 PostgreSQL版本

第1章 PostgreSQL版本

PostgreSQL 9.0性能调校
众所周知,PostgreSQL具有丰富的功能集和非常稳定的软件版本。其默认的安全配置既被安全人员称赞又因其复杂的学习过程而被诟病。SQL规范的一致性和数据完整性只允许通过严格的方式与数据库进行交互,这会使那些时常使用相对宽松的桌面数据库软件的用户感觉到非常不适应。但是所有的一切都有其自身一定的道理。

运行速度慢是另外一个让PostgreSQL出名的原因。时至今日,仍然有一些事实能证明这一点。往往有很多使用“正确的方法”数据库操作会比用其他的方法的操作需要更长的时间。例如,对于“2009年2月29日”这样一个日期而言,由于2009年不是闰年,因此这一天并没有任何意义。在实际生活中,不可能有这一天,而且也不会在这一天发生任何事。如果要让数据库向标准的日期字段中写入这个值,那确实可以,也很快速。或者,数据库可以检测这个日期是否能够有效存入目标字段,注意到在常规的日历里,没有这样的日期,它可以拒绝用户的修改。这样数据库执行的速度就稍微慢一些。PostgreSQL由一些不想抄近路做事的人设计,并且是为了这些人而设计,他们希望能够把事情做得更快和更简单。在用户只能通过一种方法来正确处理某个事物的情况下,那可能是惟一可用的方法。

然而,一旦进行了合理的实施之后,还可以回过头对它进行优化。在过去的几年中,这已经成为PostgreSQL的模式。PostgreSQL经常通过解决这些小问题来大幅提高数据库性能。其中一部分很好的设计远胜过更简单的方法,这当中由于复杂性的引入甚至付出了相当的开销。这是一种相当新的现象,一定程度上解释了为什么PostgreSQL相比其他竞争对手而言,是个速度较慢的数据库。

时间: 2024-10-07 21:36:43

《PostgreSQL 9.0性能调校》一一第1章 PostgreSQL版本的相关文章

《PostgreSQL 9.0性能调校》一一1.1 PostgreSQL历史版本的性能

1.1 PostgreSQL历史版本的性能 2005年11月,PostgreSQL发布了其8.1版本.该版本中包含了众多内部结构的改进,其中一些期望能够提高多个活动客户端在多处理器系统下的数据库性能.其结果是在处理沉重工作负荷时,数据库能力得到成比例的提高.在如今的硬件设备上进行的基准评测,突出地显示了其对先前版本的跨越.可以在http://suckit.blog.hu/2009/09/29/postgresql_history看到György Vilmos 对8.0版至8.4版的性能横向比较.

《PostgreSQL 9.0性能调校》一一1.6 小结

1.6 小结 PostgreSQL在近5年中取得了长足的发展.在建立了坚实的数据库基础后,众多开发人员向其添加了很多附加功能,在最近发布的版本中,所添加的功能和性能改进得到了很大提高.最新的PostgreSQL 9.0版本所添加的功能,使得复制和读取扩展比之前的版本变得更容易,人们期望能进一步加速这种适用于数据库的应用程序类型. PostgreSQL 8.1版本上的大量性能改进,尤其是在8.3版本中打破了一些关于与其竞争对手数据库服务器相对较慢的早期概念.还有一些情况,PostgreSQL的功能

《PostgreSQL 9.0性能调校》一一2.1 平衡硬件支出

2.1 平衡硬件支出 在生产环境中使用诸如PostgreSQL等开源数据库的一个原因是,用户本要花在软件授权上的每一分钱,都可以用在更好的硬件上.在用户的预算当中需要权衡的有三个主要部件:CPU.内存和包含相关磁盘控制器及重要部件的磁盘. 2.1.1 CPU 目前,在售的每个CPU内部都集成有至少两个.甚至多达八个核心,核心的数量能反映出大多数的数据库应用程序的一些优势.在决定使用哪一种CPU解决方案能够满足用户的数据库应用需求时,需要考虑两个基本的问题. 1.选哪一种处理器系列? 目前,Int

《PostgreSQL 9.0性能调校》一一2.2 可靠的控制器及磁盘安装

2.2 可靠的控制器及磁盘安装 PostgreSQL使用预写式日志(WAL,Write-Ahead Log)来写入数据以使数据库或硬件失效时能保存数据.这与其他数据库的日志缓存和REDO日志类似.数据库文档包含WAL的实施方法详见:http://www.postgresql.org/docs/current/static/wal.html. 以下内容引用自该文档. WAL主要的概念是改变数据文件(表和索引所在的)只能在这些变更被记录后才能进行的情况,也就是说,日志记录描述的是那些被刷新至永久存储

《PostgreSQL 9.0性能调校》一一1.2 使用PostgreSQL还是其他数据库

1.2 使用PostgreSQL还是其他数据库 当然也有其他的数据库解决方案会执行得好一些.例如,PostgreSQL缺失了一些在TPC-H测试套件当中较为复杂的查询能够得到较好执行的功能(具体内容详见第8章).因此,与一部分商业数据库相比较而言它不适用于运行在较大规模的数据仓库应用程序当中.如果用户需要进行类似TPC-H①包含的高负载查询时,就可能会发现诸如Oracle.DB2.SQL Server等数据库仍然有值得付出的性能上的优势.目前也有一些由PostgreSQL衍生出来的版本,包含了能

《PostgreSQL 9.0性能调校》一一1.4 PostgreSQL应用程序扩展生命周期

1.4 PostgreSQL应用程序扩展生命周期 虽然每一个应用程序都有其独特的发展方向,但是我们也会发现有必要作为使用PostgreSQL数据库的应用程序的一些共同技术变得更为频繁.本书中的章节分别关注这一过程的常见方面.运行数据库服务器的步骤一般如下. (1)决定服务器运行的硬件条件.理想情况下,用户将测试能够满足预期条件的硬件. (2)建立数据库磁盘的布局:RAID级别.文件系统以及硬盘上可能的表/索引的布局. (3)优化服务器配置. (4)监控服务器性能和查询执行的情况. (5)提高查询

《PostgreSQL 9.0性能调校》一一1.3 PostgreSQL工具

1.3 PostgreSQL工具 如果用户习惯于数据库厂商提供的那些针对数据库本身的完整工具集,这些工具集所涵盖的范围从服务器管理到应用程序开发,那么PostgreSQL可能无法满足这部分用户的需求.与很多成功的开源项目一样,PostgreSQL视图持续专注于一些它所擅长的功能.这也就是开发社区所指的PostgreSQL核心:主要的数据库服务器,相关的工具可以作为数据库本身的一个部分进行开发.当有新的功能提出时,如果它们可能被建立和发布在"核心外",这是首选的方式.这种方式尽可能地保持

《PostgreSQL 9.0性能调校》一一2.3 小结

2.3 小结 架设一台高性能的数据库服务器是项艰苦的工作.在众多的质量等级和相应的成本开销下有许多独立的部件可用.也有许多的小细节需要用户做出正确决定,否则将有数据损坏的风险.幸运的是,用户不需要从零开始.一般的,知名的产品都有较好的性能表现,并且可靠性也较高,用户可以对数据库服务器做一个合理的预算.但也要对结果进行用户自身的基准评测.在运行中的数据库中,错误的配置也可以很容易破坏好的设备. CPU.内存和硬盘等硬件预算的分配,非常依赖于应用程序.仔细选择和配置控制器,同时,磁盘缓存是可靠数据库

《PostgreSQL服务器编程》一一第1章 PostgreSQL服务器简介

第1章 PostgreSQL服务器简介 如果你认为PostgreSQL服务器仅仅是一个存储系统,和它交流的唯一办法就是通过SQL语句,那么你就严重了低估了它的特性.这仅仅是这个数据库的特性之一.PostgreSQL服务器是个强大的架构,它可以用来完成各种各样的数据处理,甚至包括一些非数据服务器的工作.它是一个服务器平台,你可以在这个平台上对各种流行的编程语言开发的函数或库进行简单的组合与匹配.我们来看一下这种复杂的多语言工作顺序:1)调用以Perl编写的字符串解析函数.2)把字符串转换成XSLT