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 contrib 5
1.3.2 pgFoundry 8
1.3.3 其他PostgreSQL相关软件 8
1.4 PostgreSQL应用程序的扩展生命周期 8
1.5 在实践中做性能优化 9
1.6 小结 10
第2章 数据库硬件 11
2.1 平衡硬件支出 11
2.1.1 CPU 11
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 随机存取和IOPS 32
3.2.2 顺序存取和ZCAV 33
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 sysbench 42
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 ext2 52
4.3.2 ext3 53
4.3.3 ext4 54
4.3.4 XFS 55
4.3.5 其他Linux文件系统 56
4.3.6 写入屏障 56
4.3.7 常规Linux文件系统调优 58
4.4 Solaris与FreeBSD文件系统 62
4.4.1 Solaris UFS 62
4.4.2 FreeBSD UFS2 64
4.4.3 ZFS 64
4.4.4 FAT32 66
4.4.5 NTFS 66
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 vacuum 117
7.2.1 vacuum实现 117
7.2.2 基于开销的vacuum 119
7.2.3 autovacuum 120
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