《由浅入深PostgreSQL》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(奥)汉斯·尤尔根·舍尔希著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2018
  • ISBN:9787302512882
  • 页数:331 页
图书介绍:本书详细讲解了PostgreSQL9.6数据库的设计理念,检索和查询优化;并介绍了事件驱动、并行事务处理和分区;SQL和服务器的调校;高级管理事务,例如服务器的维护和监测,复制、恢复和高可靠性;常见和不常见的故障以及解决方法。本书还介绍了专家级的命令和高级数据库功能。

第1章 PostgreSQL概述 1

1.1 PostgreSQL 9.6中有什么新技术 1

1.1.1 理解新的数据库管理功能 1

1.1.2 探究新的SQL和开发者相关的功能 3

1.1.3 使用新的备份和复制功能 5

1.1.4 理解性能相关的特性 5

1.2 总结 7

第2章 理解事务和锁定 8

2.1 使用PostgreSQL事务 8

2.1.1 在事务内处理错误 10

2.1.2 使用保存点 11

2.1.3 事务性DDL 12

2.2 理解基本的锁定 13

2.3 使用FOR SHARE和FOR UPDATE 17

2.4 理解事务隔离级别 20

2.5 观察死锁和类似的问题 22

2.6 利用咨询锁 24

2.7 优化存储以及控制清理 25

2.7.1 配置VACUUM和autovacuum 26

2.7.2 观察工作中的VACUUM 28

2.7.3 利用snapshot too old 31

2.8 总结 32

第3章 使用索引 33

3.1 理解简单查询和代价模型 33

3.1.1 使用EXPLAIN 34

3.1.2 深究PostgreSQL代价模型 36

3.1.3 部署简单的索引 38

3.1.4 使用排序输出 38

3.1.5 一次使用多个索引 39

3.1.6 以一种聪明的方式使用索引 41

3.2 使用聚簇表改善速度 43

3.2.1 聚簇表 46

3.2.2 使用只用索引的扫描 46

3.3 理解另外的B-树特性 47

3.3.1 组合索引 47

3.3.2 增加函数索引 48

3.3.3 减少空间消耗 49

3.3.4 在建立索引时添加数据 51

3.4 引入操作符类 51

3.5 理解PostgreSQL索引类型 57

3.5.1 Hash索引 58

3.5.2 GiST索引 58

3.5.3 GIN索引 61

3.5.4 SP-GiST索引 62

3.5.5 BRIN索引 62

3.5.6 增加额外索引 64

3.6 用模糊搜索实现更好的回答 65

3.6.1 利用Pg_trgm 65

3.6.2 加速LIKE查询 67

3.6.3 处理正则表达式 68

3.7 理解全文搜索-FTS 69

3.7.1 比较字符串 69

3.7.2 定义GIN索引 70

3.7.3 调试用户的搜索 71

3.7.4 收集词统计信息 72

3.7.5 利用排除操作符 73

3.8 总结 74

第4章 处理高级SQL 75

4.1 引入分组集 75

4.1.1 装载一些案例数据 75

4.1.2 应用分组集 76

4.1.3 组合分组集和FILTER子句 79

4.2 使用有序集 79

4.3 理解假想聚集 81

4.4 利用窗口函数和分析 82

4.4.1 划分数据 83

4.4.2 在窗口中排序数据 84

4.4.3 使用滑动窗口 86

4.4.4 提取窗口子句 88

4.4.5 使用内建窗口函数 88

4.5 编写自己的聚集 96

4.5.1 创建简单的聚集 96

4.5.2 为并行查询增加支持 100

4.5.3 改进效率 100

4.5.4 编写假想聚集 102

4.6 总结 104

第5章 日志文件和系统统计信息 105

5.1 收集运行时统计信息 105

5.2 创建日志文件 123

5.3 总结 128

第6章 优化查询获得良好性能 129

6.1 学习优化器的行为 129

6.2 理解执行计划 140

6.2.1 系统地处理计划 140

6.2.2 发现问题 142

6.3 理解并且固定连接 147

6.3.1 正确使用连接 147

6.3.2 处理外连接 148

6.3.3 理解join_collapse_limit变量 149

6.4 启用和禁用优化器设置 150

6.5 分区数据 154

6.5.1 创建分区 154

6.5.2 应用表约束 156

6.5.3 修改继承的结构 157

6.5.4 在分区结构中移进和移出表 158

6.5.5 清理数据 159

6.6 为好的查询性能调整参数 159

6.6.1 加速排序 162

6.6.2 加速管理任务 164

6.7 总结 165

第7章 编写存储过程 166

7.1 理解存储过程语言 166

7.2 理解各种存储过程语言 170

7.2.1 引入PL/pgSQL 171

7.2.2 引入PL/Perl 187

7.2.3 引入PL/Python 194

7.3 改进存储过程的性能 197

7.4 使用存储过程 199

7.5 总结 201

第8章 管理PostgreSQL安全性 202

8.1 管理网络安全性 202

8.1.1 理解绑定地址和连接 203

8.1.2 管理pg_hba.conf 206

8.1.3 处理实例级安全性 210

8.1.4 定义数据库级安全性 214

8.1.5 调整方案级权限 215

8.1.6 使用表 218

8.1.7 处理列级安全性 219

8.1.8 配置默认特权 220

8.2 深入行级安全性——RLS 221

8.3 检查权限 225

8.4 再分配对象和删除用户 227

8.5 总结 228

第9章 处理备份和恢复 229

9.1 执行简单转储 229

9.1.1 运行pg_dump 229

9.1.2 传递口令和连接信息 230

9.1.3 提取数据的子集 233

9.1.4 处理多种数据格式 233

9.2 重放备份 235

9.3 处理全局数据 236

9.4 总结 237

第10章 理解备份和复制 238

10.1 理解事务日志 238

10.1.1 察看事务日志 239

10.1.2 理解检查点 240

10.1.3 优化事务日志 240

10.2 事务日志归档和恢复 241

10.2.1 为归档进行配置 241

10.2.2 配置pg_hba.conf文件 242

10.2.3 创建基础备份 243

10.2.4 重放事务日志 246

10.2.5 清理事务日志归档 250

10.3 设置异步复制 251

10.3.1 执行基本设置 251

10.3.2 停止和继续复制 253

10.3.3 检查复制以确保可用性 254

10.3.4 执行故障转移以及理解时间线 256

10.3.5 管理冲突 257

10.3.6 让复制更可靠 259

10.4 升级到同步复制 259

10.5 利用复制槽 262

10.5.1 处理物理复制槽 263

10.5.2 处理逻辑复制槽 265

10.6 总结 268

第11章 选定有用的扩展 269

11.1 理解扩展如何工作 269

11.2 利用contrib模块 273

11.2.1 使用adminpack 273

11.2.2 应用布隆过滤器 275

11.2.3 部署btree gist和btree_gin 277

11.2.4 Dblink-考虑逐步淘汰 278

11.2.5 用file fdw取得文件数据 278

11.2.6 使用pageinspect检查存储 280

11.2.7 用pg_buffercache研究缓冲 282

11.2.8 用pgcrypto加密数据 284

11.2.9 用pg_prewarm预热缓冲 284

11.2.10 用pg_stat_statements检查性能 285

11.2.11 用pgstattuple检查存储 285

11.2.12 用pg_trgm进行模糊搜索 288

11.2.13 使用postgres_fdw连接到远程服务器 288

11.3 其他有用的扩展 292

11.4 总结 293

第12章 在PostgreSQL中排查错误 294

12.1 着手处理一个陌生的数据库 294

12.2 检查pg_stat_activity 294

12.3 检查慢查询 297

12.3.1 检查个体查询 298

12.3.2 用perf深入研究 299

12.4 检查日志 300

12.5 检查缺失的索引 301

12.6 检查内存和I/O 301

12.7 了解值得注意的错误场景 303

12.7.1 面对clog损坏 304

12.7.2 理解检查点消息 305

12.7.3 管理损坏的数据页面 305

12.7.4 粗心的连接管理 306

12.7.5 与表膨胀斗争 306

12.8 总结 307

第13章 迁移到PostgreSQL 308

13.1 迁移SQL语句到PostgreSQL 308

13.1.1 使用侧连接 308

13.1.2 使用分组集 309

13.1.3 使用WITH子句——公共表表达式 310

13.1.4 使用 WITH RECURSIVE子句 311

13.1.5 使用FILTER子句 311

13.1.6 使用窗口函数 312

13.1.7 使用有序集——WITHIN GROUP子句 313

13.1.8 使用TABLESAMPLE子句 313

13.1.9 使用limit/offset 315

13.1.10 使用OFFSET 315

13.1.11 使用临时表 316

13.1.12 匹配时间序列中的模式 316

13.2 从Oracle转移到PostgreSQL 317

13.2.1 使用oracle fdw扩展转移数据 317

13.2.2 使用ora2pg从Oracle迁移 319

13.2.3 常见的陷阱 321

13.3 从MySQL或MariaDB转移到PostgreSQL 322

13.3.1 处理MySQL和MariaDB中的数据 323

13.3.2 迁移数据和模式 327

13.4 总结 329