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

1.3 PostgreSQL工具

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

成熟的PostgreSQL部署应该能够识别众多的各自具有其特定目的附加工具,这些都需要整合到数据库核心服务器中以形成一个完整的系统。

1.3.1 PostgreSQL contrib

用户也许没必要安装PostgreSQL核心的contrib模块部分(其命名是根据它们所存储的目录名称)。这些可选的工具与标准工具包一同发布,但在用户的系统上默认可以不进行安装。contrib代码作为PostgreSQL核心的一部分进行维护与发布,但不要求服务器进行操作。

从代码质量的角度上看,contrib模块在其测试时并没有遵守那么高的标准。主服务器包含对每个功能的深度回归分析测试,这会涉及在数量庞大的系统中去搜寻错误。可选的contrib模块并没有得到在相同级别上的测试覆盖。然而,代码本身是由同一个开发团队进行维护,其中的一些模块极其受欢迎,并且经过用户的良好测试。

查看所有可用的contrib模块的列表,请浏览http://www.postgresql.org/docs/current/static/ contrib.html。

1.发现系统中的contrib模块
检查是否安装有contrib模块的方法是去查看pgbench程序是否可用。pgbench是少数那些安装了完整程序的contrib组件工具的其中之一,而不仅仅是用户可使用的脚本。在UNIX中,检查pgbench是否安装的例子如下所示。

在大多数Linux系统中,如果用的是RPM或者DEB包安装的PostgreSQL,可选的postgresql- contrib包中包含所有的contrib模块以及与它相关的安装脚本。如果尚未安装相关功能的话,就需要使用yum、apt-get或者类似的机制来添加安装包。在Solaris系统中,这个包的名称为SUNWpostgr-contrib。

如果用户不能确定在其系统中PostgreSQL contrib模块安装的位置,那可以使用文件系统工具进行搜索。在许多类UNIX系统中,locatefind命令一样能够很好地达到目的。在Windows系统中,在开始菜单中可以找到文件搜索工具。例如,用户要搜索在下一章要谈到的内存分配的文件pg_ buffercache.sql,以下是在部分平台下,该文件所在的位置的说明。

RHEL和CentOS等Linux系统中,该文件的路径为:/usr/share/pgsql/contrib/pg_ buffer cache.sql
Debian或者Ubuntu等Linux系统中,该文件的路径为:/usr/share/postgresql/ version/contrib/pg_buffercache.sql
Solaris系统中该文件路径为:/usr/share/pgsql/contrib/pg_buffercache.sql
在Windows系统中,采用默认选项将会安装contrib模块,其路径为:C:\Program Files\ PostgreSQL/version/share/contrib/pg_buffercache.sql
2.从源码安装contrib模块
在一些平台下,当用户的服务器环境符合相应的先决条件,则可以使用源码安装PostgreSQL作为一种简单的练习。相关详细信息请参考:http://www.postgresql.org/docs/current/static/install-procedure.html

在构建主要服务器的代码后,用户还需要自行编译诸如pg_buffercache之类的contrib模块。以下是一个相关的实例,在该例当中假设用户的PostgreSQL目标路径为/usr/local/postgresql,并且目录source是用户放置源代码的目录(本实例不作为典型或者推荐用户使用的目录结构),如下所示。

在contrib目录中运行make/make install命令可以构建并安装所有的contrib模块。请注意其中的一些更广泛的源代码构建的需求。uuid-ossp模块就是一个更具挑战性的自行编译的模块实例。

3.使用contrib模块
虽然一些诸如pgbench的contrib程序可以直接执行,但那些安装在数据库中的工具大多数都是为了向其添加额外的功能。

例如,要将模块pg_buffercache安装到一个名为abc的数据库中,则要在命令行下使用如下命令。

用户可以使用图形化用户界面管理工具pgAdmin III替代命令行来完成工作。它是捆绑在Windows平台下的PostgreSQL工具,以替代命令行方法。具体使用方法如下。

指明用户要安装模块的数据库。
单击工具栏上的SQL图标,启动命令行编辑器。
选择 File/Open,指向C:\ProgramFiles\PostgreSQL/version/share/contrib/pg_ buffercache.sql并打开文件。
使用绿色箭头或者Query/Execute开始执行。
使用以下的查询可以快速检测任意类型的系统中所安装的模块。

如果返回任意值,则表明该模块已安装。注意pg_buffercache只能由数据库超级用户安装和使用。

1.3.2 pgFoundry

PostgreSQL相关的项目的官方站点是pgFoundry:http://pgfoundry.org/。

pgFoundry只是存放PostgreSQL软件的主机,除了文件分发之外还提供诸如邮件列表和错误追踪的功能。许多最流行的PostgreSQL附加程序都可以在那里找到。

Windows程序可以通过.Net和OLE访问PostgreSQL
诸如pgpool和pgBouncer之类的连接缓冲池。
诸如pgFouine、SkyTools以及pgtune之类的数据库管理工具。
尽管有时会由从事PostgreSQL核心的同一批人维护pgFoundry,但其代码质量时常会有显著变化。保持项目良好进行的一个方法是注意定期和最近的发布版本。

1.3.3 其他一些与PostgreSQL相关的软件

除了PostgreSQL核心自带的程序之外,诸如contrib模块以及pgFoundry提供的软件等,还有很多的程序能够让PostgreSQL更加易用和强大。在网络上都能找到这些资源。为需求本身选择正确的包实际上有很多选择。

本书中,很多很有用的程序都会被重点提出,用户可以尽早了解所提供的简短列表。这是构建大型开源项目的标准方法,用户可以得到一个基本的系统运行环境并随后在需要的时候去添加额外的的组件。

对那些安装任何软件都要经过审批和QA周期的企业文化来说,这样做是比较困难的。为了提高在这种环境下用户成功安装PostgreSQL的几率,在早期就引进这一概念是很重要的。在后期需要往较小的数据库核心中附加程序来添加组件,很明显在刚开始的时候不需要全部组件。`

时间: 2024-09-20 11:56:40

《PostgreSQL 9.0性能调校》一一1.3 PostgreSQL工具的相关文章

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

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

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

PostgreSQL 10.0 preview 功能增强 - 匿名、自治事务(Oracle 兼容性)

标签 PostgreSQL , 10.0 , 匿名事务 , 自治事务 背景 PostgreSQL 10.0 通过session backendground实现了匿名事务,从此可以愉快的支持Oracle存储过程的自治事务了. 此前,我们需要通过dblink实现,或者通过匿名块+exception来实现,比较繁琐. <PostgreSQL Oracle 兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁> <PostgreSQL Oracle 兼容性之