新書推薦:
《
走出内心的深渊:快节奏人群心理疾病与健康指南(原书第3版)
》
售價:HK$
77.3
《
如何成为一家千亿公司
》
售價:HK$
76.2
《
趋势跟踪: 汤姆·巴索的交易谋略
》
售價:HK$
77.3
《
滚滚红尘(《滚滚红尘》电影原著)
》
售價:HK$
54.9
《
罗马之变(法语直译,再现罗马共和国走向罗马帝国的辉煌历史)
》
售價:HK$
109.8
《
自然之争:1600年以来苏格兰和英格兰北部地区的环境史(新史学译丛)
》
售價:HK$
106.4
《
硝烟下的博弈:工业革命与中西方战争
》
售價:HK$
87.4
《
让内的理性主义 发现无意识之旅
》
售價:HK$
66.1
|
內容簡介: |
本书从操作系统到数据库实现的多个层面,讲解了PostgreSQL数据库进行常规性能调优的各个场景。无论对于从其他数据库转战PostgreSQL的DBA还是使用过PostgreSQL一段时间的DBA,它都是一本不可多得的参考资料。
|
目錄:
|
Contents?目录
赞誉
推荐序
译者序
译者简介
中文版序
关于作者
关于审校者
前言
第1章 PostgreSQL版本1
1.1 PostgreSQL历代版本的性能2
1.1.1 选择要部署的版本3
1.1.2 升级到一个新的主版本3
1.2 选择PostgreSQL还是其他数据库4
1.3 PostgreSQL工具5
1.3.1 PostgreSQL contrib5
1.3.2 pgFoundry8
1.3.3 其他PostgreSQL相关软件8
1.4 PostgreSQL应用程序的扩展生命周期8
1.5 在实践中做性能优化9
1.6 小结10
第2章 数据库硬件 11
2.1 平衡硬件支出11
2.1.1 CPU11
2.1.2 内存13
2.1.3 磁盘13
2.1.4 磁盘控制器17
2.2 可靠的控制器及磁盘安装21
2.2.1 驱动器可靠性研究21
2.2.2 回写缓存22
2.2.3 直写式缓存的性能影响25
2.3 小结25
第3章 数据库硬件的基准评测27
3.1 CPU和内存基准评测27
3.1.1 Memtest86+28
3.1.2 STREAM内存测试28
3.1.3 CPU基准评测29
3.1.4 内存及处理器速度慢的根源31
3.2 物理磁盘的性能32
3.2.1 随机存取和IOPS32
3.2.2 顺序存取和ZCAV33
3.2.3 提交率34
3.3 硬盘基准评测工具34
3.3.1 使用HD Tune进行硬盘基准评测35
3.3.2 磁盘顺序读写吞吐量38
3.3.3 Bonnie++38
3.3.4 sysbench42
3.3.5 寻道速率43
3.3.6 复杂磁盘基准评测45
3.4 样品磁盘测试结果45
3.5 小结48
第4章 磁盘设置50
4.1 文件系统最大值50
4.2 文件系统的崩溃恢复51
4.3 Linux文件系统52
4.3.1 ext252
4.3.2 ext353
4.3.3 ext454
4.3.4 XFS55
4.3.5 其他Linux文件系统56
4.3.6 写入屏障56
4.3.7 常规Linux文件系统调优58
4.4 Solaris与FreeBSD文件系统62
4.4.1 Solaris UFS62
4.4.2 FreeBSD UFS264
4.4.3 ZFS64
4.4.4 FAT3266
4.4.5 NTFS66
4.5 PostgreSQL的磁盘布局67
4.5.1 符号链接67
4.5.2 表空间67
4.5.3 数据库目录树68
4.5.4 磁盘阵列、RAID和磁盘布局69
4.6 小结71
第5章 数据库缓存内存72
5.1 postgresql.conf中的内存单位72
5.2 增加UNIX共享内存参数以增大共享内存块73
5.2.1 内核信号量74
5.2.2 估算共享内存块的分配75
5.2.3 检查数据库缓存76
5.2.4 在数据库中安装pg_buffercache模块76
5.2.5 数据库磁盘布局77
5.2.6 在数据库中创建新块80
5.2.7 写脏块到磁盘80
5.3 崩溃恢复和缓冲区缓存81
5.3.1 检查点处理基础81
5.3.2 预写日志和恢复处理81
5.3.3 检查点的时间选择82
5.3.4 数据库块的生命周期84
5.4 数据库缓存与操作系统缓存对比85
5.4.1 双重缓存数据85
5.4.2 检查点开销86
5.4.3 起始大小指导86
5.5 分析缓存内容87
5.5.1 检查缓冲区缓存查询88
5.5.2 使用缓冲区缓存检查来调整反馈91
5.6 小结92
第6章 服务器配置调优93
6.1 与实时配置交互93
6.1.1 默认值和重置值94
6.1.2 允许更改的上下文信息94
6.1.3 重新加载配置文件95
6.1.4 数据库连接97
6.1.5 共享内存98
6.1.6 日志记录98
6.1.7 Vacuuming和统计100
6.1.8 检查点101
6.1.9 PITR和WAL复制103
6.1.10 调整以防患于未然106
6.2 小结109
第7章 日常维护110
7.1 事务可见性与多版本并发控制110
7.1.1 可见性的内部计算111
7.1.2 更新111
7.1.3 行锁的冲突113
7.1.4 删除操作114
7.1.5 MVCC的优点115
7.1.6 MVCC的缺点115
7.1.7 事务ID重叠116
7.2 vacuum117
7.2.1 vacuum实现117
7.2.2 基于开销的vacuum119
7.2.3 autovacuum120
7.2.4 vacuum和autovacuum的常见问题123
7.3 自动分析126
7.4 索引膨胀127
7.4.1 测定索引膨胀127
7.4.2 修复索引膨胀128
7.5 转储和恢复129
7.6 清空数据库表129
7.7 CLUSTER命令129
7.8 重建索引130
7.9 详细数据和索引页的监控131
7.10 监控查询日志131
7.10.1 基本的PostgreSQL日志设置131
7.10.2 对棘手的查询进行日志记录134
7.10.3 日志文件分析136
7.11 小结140
第8章 数据库基准评测141
8.1 pgbench默认测试141
8.1.1 表的定义141
8.1.2 规模检测143
8.1.3 查询脚本定义143
8.1.4 为pgbench配置数据库服务器145
8.2 使用pgbench-tools图形化输出结果147
8.3 pgbench测试结果样例148
8.3.1 只读测试148
8.3.2 类TPC-B测试(读、写)149
8.3.3 延迟分析150
8.4 导致不良结果以及变化的缘由152
8.4.1 PostgreSQL开发人员模式153
8.4.2 worker线程和pgbench程序的限制154
8.5 自定义pgbench测试154
8.6 TPC基准评测155
8.7 小结156
第9章 数据库索引157
9.1 索引例子详解158
9.1.1 测量查询的磁盘和索引块统计信息158
9.1.2 运行例子159
9
|
內容試閱:
|
Preface?前言无论是传统的企业型应用,还是当下的Web应用,作为一种数据库平台,PostgreSQL在为这些应用程序提供数据存储服务方面的可行性日趋成熟。不过,要想获取PostgreSQL的最佳性能,一直以来都并非易事。用户需遵循适宜的经验法则,需持续监控和维护以保障数据库系统健康运行,需以合理化建议定位和处理当前问题,需对数据库相关的附件工具有所涉猎,以便遇到核心数据库无法解决的问题时,可以为其进行功能扩展。
本书内容概述第1章介绍了PostgreSQL最近几个版本的性能改进情况。通常,人们认为所有软件的新版本会问题百出,而且会比以前的版本运行得更慢,但PostgreSQL不存在这个问题。
第2章讨论了如何仔细挑选服务器硬件中的主要部件,包括处理器、内存以及磁盘等,在预算允许的情况下如何组建一个稳定可靠的数据库存储服务器。特别是在磁盘控制器和驱动器方面,如果误用了易失性回写缓存,很容易导致数据库损坏。
第3章讨论了不同数据库硬件性能方面的量化标准。比如在你的系统当中,内存读取到底有多快?磁盘的原始性能有多强?在添加更多的磁盘后,数据库性能是否能正常按比例提升?第4章研究现行文件系统的可选方案,并就如何权衡硬盘中数据库的不同布局提出建议。同时也讨论了一些常见的有效文件系统的调优问题。
第5章深入研究了数据库在磁盘、内存中的存储机制,并解释了checkpoint进程是如何协调这两种存储机制以保证数据安全的。此外,该章还讨论了如何深入查看数据库所缓存的数据,以及在此基础上,确认当下存储在系统内存里的数据与你的预期数据是否一致。
第6章涵盖了postgresql.conf文件中的最重要的一些设置选项,介绍了这些选项的含义以及如何设置这些选项。此外,也指出了可能会引起问题的设置。
第7章首先阐释了PostgreSQL如何判定哪些行数据对哪些用户可见。这些可见性信息的存储方法需要一个名为VACUUM的清理进程来正常地重新使用剩余空间。此外,该章也涉及了一些常见问题以及针对这些问题的调节方式,也涵盖了一直运行的autovacuum。最后,该章介绍了数据库日志的数据量调节方式,以及如何使用查询日志分析器对结果进行分析,从而帮助用户找出查询瓶颈。
第8章研究如何使用PostgreSQL自带的pgbench测试程序来获取有用的基准评测结果。
第9章介绍索引在响应查询时是如何减少数据块的读取量的。这种方法可以彻底探索一些常见问题,比如为什么一个查询会使用顺序扫描而不是使用强大的索引扫描。
第10章是PostgreSQL optimizer(优化器)指南,根据一些查询例子的不同执行方式以及数据库参数的不同设置,来说明数据库的不同优化方式。
第11章介绍了数据库内部所收集的统计信息,以及哪些信息有助于查找问题。同时,也介绍了能够让你看到查询活动以及锁行为的一些视图。
第12章先介绍了如何使用操作系统所提供的基本监视工具以确定数据库的当前动作。然后,该章针对可按照时间对信息趋势进行图形化表示的软件给出了建议。
第13章对在同一时间内对数据库进行大量连接时所遇到的困难进行了说明。同时,建议使用两种软件包——连接池(以更好地对请求进行排序)和缓存(在不连接数据库的情况下响应用户请求)——来帮助解决这些问题。
第14章讲述了如何通过跨节点复制数据来减轻数据库的负载压力,典型的解决方式是,多个同步只读的从节点搭配一个可读写的主节点。
第15章探讨如何有效地将数据划分为子集,这样可以在数据库的一小部分上执行查询。所讨论的方法包括单节点数据库表分区和使用PLProxy及其相关工具集来构建跨多节点的共享数据库。
第16章探讨那些在PostgreSQL中看起来阻碍初学者使用的部分。重点是如何找到代码不工作的原因,以及有哪些现有工具可以帮助诊断问题。
第17章以统计记录数和外键处理作为例子,涵盖了所有批量导入部分。同时,该章还包括人们使用PostgreSQL时所遇到的常见问题。
第18章详细介绍了从PostgreSQL 8.1到9.6各个版本中与性能相关的功能变化情况。有时,避免常见问题并获得更好性能的最佳方式就是升级到不再存在问题的新版本。
你需要为阅读本书准备什么为了更好地利用本书,你至少需要一个能够连接服务器并执行查询的PostgreSQL客户端。理想情况下,你最好也是服务器管理员。从http:www.postgresql.orgdownload 上可以下载支持各种主流操作系统的完整客户端与服务端PostgreSQL安装包。本书的所有例子都是通过命令行方式执行的,通常是运行psql程序。这样可以使它们适合大多数操作系统平台。这样可以直接进行许多操作,而不必使用PostgreSQL的图形界面(GUI)工具,比如pgAdmin III程序。
本书提供的一些脚本是用bash脚本语言编写的,如果你使用的是Windows操作系统,可以从http:www.cygwin.com 下载cygwin软件套件,cygwin可以在Windows系统中提供常见的UNIX工具,比如bash。
本书读者本书适用于那些使用或计划使用PostgreSQL的中高级数据库管理员和开发人员。系统管理员可以在安装、配置和监视数据库服务器方面受益。本书对
|
|