当前位置:首页 > 工业技术
PostgreSQL 9X之巅  原书第2版
PostgreSQL 9X之巅  原书第2版

PostgreSQL 9X之巅 原书第2版PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:(美)艾博拉·艾哈迈德,格利高里·史密斯著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111596196
  • 页数:333 页
图书介绍:本书从操作系统到数据库实现的多个层面,讲解了PostgreSQL数据库进行常规性能调优的各个场景。无论对于从其他数据库转战PostgreSQL的DBA还是使用过PostgreSQL一段时间的DBA,它都是一本不可多得的参考资料。
《PostgreSQL 9X之巅 原书第2版》目录
标签:

第1章 PostgreSQL版本 1

1.1PostgreSQL历代版本的性能 2

1.1.1选择要部署的版本 3

1.1.2升级到一个新的主版本 3

1.2选择PostgreSQL还是其他数据库 4

1.3PostgreSQL工具 5

1.3.1PostgreSQL contrib 5

1.3.2pgFoundry 8

1.3.3其他PostgreSQL相关软件 8

1.4PostgreSQL应用程序的扩展生命周期 8

1.5在实践中做性能优化 9

1.6小结 10

第2章 数据库硬件 11

2.1平衡硬件支出 11

2.1.1CPU 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.1CPU和内存基准评测 27

3.1.1Memtest86+ 28

3.1.2STREAM内存测试 28

3.1.3CPU基准评测 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.3Bonnie++ 38

3.3.4sysbench 42

3.3.5寻道速率 43

3.3.6复杂磁盘基准评测 45

3.4样品磁盘测试结果 45

3.5小结 48

第4章 磁盘设置 50

4.1文件系统最大值 50

4.2文件系统的崩溃恢复 51

4.3Linux文件系统 52

4.3.1ext2 52

4.3.2ext3 53

4.3.3ext4 54

4.3.4XFS 55

4.3.5其他Linux文件系统 56

4.3.6写入屏障 56

4.3.7常规Linux文件系统调优 58

4.4Solaris与FreeBSD文件系统 62

4.4.1Solaris UFS 62

4.4.2FreeBSD UFS2 64

4.4.3ZFS 64

4.4.4FAT32 66

4.4.5NTFS 66

4.5PostgreSQL的磁盘布局 67

4.5.1符号链接 67

4.5.2表空间 67

4.5.3数据库目录树 68

4.5.4磁盘阵列、RAID和磁盘布局 69

4.6小结 71

第5章 数据库缓存内存 72

5.1postgresql.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.7Vacuuming和统计 100

6.1.8检查点 101

6.1.9PITR和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.5MVCC的优点 115

7.1.6MVCC的缺点 115

7.1.7事务ID重叠 116

7.2vacuum 117

7.2.1vacuum实现 117

7.2.2基于开销的vacuum 119

7.2.3autovacuum 120

7.2.4vacuum和autovacuum的常见问题 123

7.3自动分析 126

7.4索引膨胀 127

7.4.1测定索引膨胀 127

7.4.2修复索引膨胀 128

7.5转储和恢复 129

7.6清空数据库/表 129

7.7CLUSTER命令 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.1pgbench默认测试 141

8.1.1表的定义 141

8.1.2规模检测 143

8.1.3查询脚本定义 143

8.1.4为pgbench配置数据库服务器 145

8.2使用pgbench-tools图形化输出结果 147

8.3pgbench测试结果样例 148

8.3.1只读测试 148

8.3.2类TPC-B测试(读、写) 149

8.3.3延迟分析 150

8.4导致不良结果以及变化的缘由 152

8.4.1PostgreSQL开发人员模式 153

8.4.2worker线程和pgbench程序的限制 154

8.5自定义pgbench测试 154

8.6TPC基准评测 155

8.7小结 156

第9章 数据库索引 157

9.1索引例子详解 158

9.1.1测量查询的磁盘和索引块统计信息 158

9.1.2运行例子 159

9.1.3例子数据设置 159

9.1.4简单索引查找 160

9.1.5全表扫描 161

9.1.6索引创建 162

9.1.7用低效的索引查找 163

9.1.8联合索引 164

9.1.9依靠索引聚簇 166

9.1.10带有缓冲区计数的EXPLAIN 167

9.2索引创建和维护 168

9.2.1唯一索引 168

9.2.2并发创建索引 169

9.2.3对索引聚簇 169

9.2.4重建索引 170

9.3索引类型 170

9.3.1B-tree 170

9.3.2哈希 171

9.3.3GIN 171

9.3.4GiST 172

9.3.5SP-GiST 172

9.3.6BRIN 172

9.3.7仅索引扫描 173

9.4count(*) 174

9.5可见性映射 175

9.6高级索引使用 175

9.6.1多列索引 175

9.6.2索引用于排序 175

9.6.3部分索引 176

9.6.4基于表达式的索引 176

9.6.5索引用于全文搜索 176

9.7小结 177

第10章 查询优化 178

10.1样例数据集 178

10.1.1Pagila 179

10.1.2Dell Store2 179

10.2EXPLAIN基础 180

10.2.1计时开销 181

10.2.2冷热缓存行为 181

10.3执行计划节点结构 183

10.3.1基本代价计算 184

10.3.2可视化解释 185

10.3.3详细输出 186

10.3.4机器可读的解释输出 186

10.3.5规划分析工具 188

10.4组装行集合 188

10.4.1元组ID 188

10.4.2顺序扫描 189

10.4.3索引扫描 189

10.4.4仅索引扫描 190

10.4.5位图堆扫描和索引扫描 190

10.5处理节点 191

10.5.1排序 191

10.5.2Limit 192

10.5.3聚集 193

10.5.4HashAggregate 194

10.5.5唯一 194

10.5.6Result 195

10.5.7Append 195

10.5.8Group 196

10.5.9子查询扫描和子计划 197

10.5.10集合操作 198

10.5.11物化 199

10.6CTE扫描 199

10.7copy命令 199

10.7.1COPY TO 200

10.7.2COPY FROM 200

10.7.3COPY FREEZE 200

10.8连接 201

10.8.1嵌套循环 201

10.8.2归并连接 203

10.8.3哈希连接 204

10.8.4连接顺序 205

10.9收集统计信息 207

10.9.1查看和使用统计信息 207

10.9.2统计信息目标 210

10.9.3难以估算的部分 211

10.10其他查询规划参数 211

10.10.1effective_cache_size 212

10.10.2work_mem 212

10.10.3constraint_exclusion 213

10.10.4cursor_tuple_fraction 213

10.11执行其他语句类型 214

10.12改进查询 214

10.12.1优化完全缓存的数据集 214

10.12.2查询等价测试 215

10.12.3禁用优化器特性 215

10.12.4优化器缺陷的解决方案 218

10.12.5用OFFSET避免计划重构 219

10.12.6外部故障点 220

10.13SQL的限制 221

10.13.1在SQL中对数据行进行编号 221

10.13.2使用窗口函数编号 222

10.13.3使用窗口函数进行累计 222

10.14小结 223

第11章 数据库活动和统计信息 224

11.1统计信息视图 224

11.2累积视图和实时视图 226

11.3表统计信息 227

11.4索引统计信息 230

11.5数据库级别的汇总 231

11.6连接与行为 232

11.7锁 232

11.7.1虚拟事务 233

11.7.2解码锁信息 234

11.7.3表级锁的模式 236

11.7.4事务锁等待 236

11.7.5表的锁等待 237

11.7.6记录锁信息 238

11.7.7保存pg_stat bgwriter快照 242

11.7.8通过后台写入进程的统计信息进行调优 243

11.8小结 245

第12章 监控和趋势预测 247

12.1UNIX监控工具 247

12.1.1例子设置 247

12.1.2vmstat 248

12.1.3iostat 250

12.1.4top 257

12.1.5SysStat和sar 258

12.2Windows监控工具 260

12.2.1任务管理器 260

12.2.2Windows系统监控器 261

12.3趋势分析软件 262

12.3.1监控和趋势分析软件类型 263

12.3.2Nagios 264

12.3.3Cacti 265

12.3.4Munin 265

12.3.5其他趋势分析软件包 266

12.4小结 268

第13章 连接池和缓存 269

13.1连接池技术 269

13.1.1连接池中的连接数 270

13.1.2pgpool-Ⅱ 271

13.1.3连接池 271

13.1.4复制 271

13.1.5看门狗 271

13.1.6故障切换 272

13.1.7负载均衡 272

13.1.8pgBouncer 273

13.1.9memcached是什么 274

13.1.10pgmemcache 275

13.2小结 275

第14章 扩展复制 277

14.1热备份 277

14.1.1专用术语 278

14.1.2设置WAL文件传送 279

14.1.3流复制 279

14.1.4级联复制 279

14.1.5同步复制 279

14.1.6热备份调优 280

14.2复制队列管理器 281

14.2.1Slony 281

14.2.2Londiste 282

14.2.3使用复制队列软件进行读取扩展 282

14.2.4特殊的应用程序需求 282

14.2.5Bucardo 283

14.2.6pglogical 283

14.2.7xDB 283

14.2.8pgpool-Ⅱ 283

14.3其他有趣的复制相关的项目 284

14.4复制方案对比 285

14.5小结 285

第15章 分区数据 286

15.1表继承 286

15.2dellstore2数据库 287

15.3PostgreSQL中的分区技术 288

15.4范围分区 288

15.5确定要进行分区的关键字段 289

15.6调整分区大小 290

15.7重定向INSERT语句至分区 290

15.7.1动态的触发器函数 291

15.7.2分区规则 292

15.8空分区的查询规则 293

15.9修改日期的UPDATE触发器 293

15.10实时迁移分区表 294

15.11分区查询 296

15.12创建新的分区 297

15.12.1定期创建分区 297

15.12.2动态创建分区 297

15.13分区的优势 298

15.14分区中的常见错误 298

15.15使用PL/Proxy水平分区 299

15.15.1哈希生成 300

15.15.2使用PL/Proxy扩展 301

15.15.3使用GridSQL扩展 302

15.16小结 302

第16章 数据库性能分析 304

16.1使用gprof进行性能分析 304

16.2使用OProfile进行性能分析 305

16.3使用Valgrind进行调试 306

16.4Visual Studio 306

16.5使用DTrace进行性能分析 307

16.5.1FreeBSD中的DTrace 307

16.5.2Linux中SystemTap的DTrace仿真 307

16.6小结 308

第17章 避免常见问题 309

17.1批量加载 309

17.1.1加载方式 309

17.1.2批量加载调优 310

17.1.3省略预写式日志加速 311

17.1.4重建索引和添加约束 312

17.1.5并行恢复 312

17.1.6加载后清理 313

17.2常见性能问题 313

17.2.1计算行数 313

17.2.2不明写入 314

17.2.3慢函数和预处理语句执行 315

17.2.4PL/pgSQL基准评测 315

17.2.5高外键开销 316

17.2.6触发内存使用 317

17.2.7过重的统计收集器开销 317

17.2.8物化视图 318

17.3小结 318

第18章 发行版本性能特征 319

18.1积极升级PostgreSQL版本 319

18.2版本8.1中的性能特征 320

18.3版本8.2中的性能特征 320

18.4版本8.3中的性能特征 321

18.5版本8.4中的性能特征 322

18.6版本9.0中的性能特征 324

18.6.1复制 324

18.6.2查询和EXPLAIN 324

18.6.3数据库开发 325

18.6.4设置和监控 326

18.7版本9.1中的性能特征 328

18.8版本9.2中的性能特征 328

18.9版本9.3中的性能特征 329

18.10版本9.4中的性能特征 329

18.11版本9.5中的性能特征 330

18.12版本9.6中的性能特征 330

18.13小结 331

返回顶部