POSTGRESQL技术内幕:查询优化深度探索

相关资料

[

作为开源关系数据库领域先进技术的代表,PostgreSQL近年来受到越来越多人的关注,尤其是它的优化器,称得上是一种教科书式的实现。树杰的《PostgreSQL技术内幕:查询优化深度探索》全面解读了PostgreSQL优化器,从关系代数基本原理到PostgreSQL优化器实现中用到的主要数据结构及函数,都进行了准确细致的说明,同时条理清晰地描述了基于规则的查询改写、基于统计信息和代价计算的计划选择、动态规划算法、基因算法等。对于希望学习和深入了解PostgreSQL优化器的同学,本书是一本非常好的教材和参考书。
——蚂蚁金服基础数据部资深专家 蒋志勇

查询优化器是数据库的大脑,它生成的执行计划的优劣直接决定了数据库的性能。读者通过本书,可以深入理解和掌握PostgreSQL这个优秀开源数据库的优化器,更可以推而广之去理解和掌握其他数据库的优化器。在此基础上,如果能再去思考如何创新,那么本书作者的努力就得到超额回报了。
——*云云数据库首席架构师 文继军

树杰是数据库内核研发领域的一个老兵,对数据库的内核实现有深刻的理解和认识,始终保持着对数据库技术的热情。本书是国内为数不多的介绍PostgreSQL数据库内核优化器的原创书籍,是作者多年工作经验的总结。正如作者所说, PostgreSQL的先进性体现在其强大的优化器实现上。本书详细介绍了PostgreSQL优化器从逻辑优化、物理优化、直至生成执行计划的各个阶段,结合实现的数据结构和关键代码深入浅出地介绍了优化器各个模块的实现原理及流程,层层剥茧,逐步揭开了查询优化的神秘面纱。
——天曦科技数据库事业部技术总监 王颖泽

PostgreSQL以其完善的功能、强大的性能、优秀的扩展性、系统的稳定性和良好的生态而著称,其中查询优化技术是核心的核心。我很高兴能有这样一本翔实的查询优化专业书籍问世。本书源自作者多年查询优化一线工作经验,不仅对总体架构把控到位,脉络清晰,分析深入,而且对关键的细节部分结合大量实例进行了详细阐述,非常符合工程师的需要。我强烈建议所有希望深度探索PostgreSQL查询优化或进行源码分析的朋友阅读本书,它非常值得你拥有!
——Pivotal中国研发中心工程总监 杨瑜

因为实现细节比较复杂,查询优化器是数据库中非常重要的模块之一,也是数据库中很难掌握的模块之一。本书作者通过深度分析PostgreSQL数据库查询优化器的关键源码,清晰地描绘了查询优化器的实现脉络,我相信读者阅读完本书后,对查询优化器不仅能知其然,更能知其所以然,且能够有逻辑、有条理、有思想地对数据库进行调优,真正做到“胸中有丘壑,眼里存山河”。
——阿里巴巴数据库事业部高级数据库专家 赵殿奎

]

本书特色

[

查询优化器是数据库中很重要的模块之一,只有掌握好查询优化的方法且了解查询优化的细节,在对数据库调优的过程中才能有的放矢,否则调优的过程就如无本之木、无源之水,虽上下求索而不得其法。
《PostgreSQL技术内幕:查询优化深度探索》揭示了PostgreSQL数据库中查询优化的实现技术细节,首先对子查询提升、外连接消除、表达式预处理、谓词下推、连接顺序交换、等价类推理等逻辑优化方法进行了详细描述,然后结合统计信息、选择率、代价对扫描路径创建、路径搜索方法、连接路径建立、Non-SPJ路径建立、执行计划简化与生成等进行了深度探索,使读者对PostgreSQL数据库的查询优化器有深层次的了解。
《PostgreSQL技术内幕:查询优化深度探索》适合数据库内核开发人员及相关领域的研究人员、数据库DBA、高等院校相关专业的本科生或者研究生阅读。

]

内容简介

[

查询优化器是数据库中很重要的模块之一,只有掌握好查询优化的方法且了解查询优化的细节,在对数据库调优的过程中才能有的放矢,否则调优的过程就如无本之木、无源之水,虽上下求索而不得其法。本书揭示了PostgreSQL数据库中查询优化的实现技术细节,首先对子查询提升、外连接消除、表达式预处理、谓词下推、连接顺序交换、等价类推理等逻辑优化方法进行了详细描述,然后结合统计信息、选择率、代价对扫描路径创建、路径搜索方法、连接路径建立、Non-SPJ路径建立、执行计划简化与生成等进行了深度探索,使读者对PostgreSQL数据库的查询优化器有深层次的了解。本书适合数据库内核开发人员及相关领域的研究人员、数据库DBA、高等院校相关专业的本科生或者研究生阅读。

]

作者简介

[

张树杰,北京大学工程管理硕士。2005年—2011年,从事安全相关的工作,涉及入侵检测、数据库审计、虚拟桌面等等。2011年—2015年,北京人大金仓信息技术股份有限公司,从事数据库内核开发工作。2015年—至今,天津神舟通用数据技术有限公司北京分公司,从事数据库内核开发工作及团队管理工作。

]

目录

第1章 概述 1
1.1 查询优化的简介 1
1.2 逻辑优化 3
1.2.1 关系模型 3
1.2.2 逻辑优化示例 8
1.3 物理优化 10
1.3.1 物理优化的4个“法宝” 12
1.3.2 物理路径的生成过程 14
1.4 文件介绍 17
1.5 示例的约定 18
1.6 小结 19

第2章 查询树 20
2.1 Node的结构 20
2.2 Var结构体 21
2.3 RangeTblEntry结构体 23
2.4 RangeTblRef结构体 25
2.5 JoinExpr结构体 26
2.6 FromExpr结构体 27
2.7 Query结构体 27
2.8 查询树的展示 31
2.9 查询树的遍历 31
2.10 执行计划的展示 32
2.11 小结 33

第3章 逻辑重写优化 34
3.1 通用表达式 35
3.2 子查询提升 36
3.2.1 提升子连接 37
3.2.2 提升子查询 51
3.3 UNION ALL优化 68
3.4 展开继承表 69
3.5 预处理表达式 71
3.5.1 连接Var的溯源 71
3.5.2 常量化简 72
3.5.3 谓词规范 73
3.5.4 子连接处理 79
3.6 处理HAVING子句 80
3.7 Group By键值消除 81
3.8 外连接消除 82
3.9 grouping_planner的说明 91
3.10 小结 92

第4章 逻辑分解优化 93
4.1 创建RelOptInfo 94
4.1.1 RelOptInfo结构体 94
4.1.2 IndexOptInfo结构体 97
4.1.3 创建RelOptInfo 100
4.2 初识等价类 102
4.3 谓词下推 106
4.3.1 连接条件的下推 106
4.3.2 过滤条件的下推 112
4.3.3 连接顺序 113
4.3.4 deconstruct_recurse函数 118
4.3.5 make_outerjoininfo函数 124
4.3.6 distribute_qual_to_rels函数 132
4.3.7 reconsider_outer_join_clauses函数 151
4.3.8 generate_base_implied_equalities函数 156
4.3.9 记录表之间的等价关系 157
4.4 PlaceHolderVar的作用 158
4.5 Lateral语法的支持 161
4.5.1 Lateral的语义分析 162
4.5.2 收集Lateral变量 164
4.5.3 收集Lateral信息 164
4.6 消除无用连接项 166
4.7 Semi Join消除 171
4.8 提取新的约束条件 172
4.8.1 提取需要满足的条件 173
4.8.2 提取流程 174
4.8.3 选择率修正 176
4.9 小结 177

第5章 统计信息和选择率 178
5.1 统计信息 178
5.1.1 PG_STATISTIC系统表 181
5.1.2 PG_STATISTIC_EXT系统表 185
5.1.3 单列统计信息生成 187
5.1.4 多列统计信息生成 196
5.2 选择率 200
5.2.1 使用函数依赖计算选择率 204
5.2.2 子约束条件的选择率 208
5.2.3 基于范围的约束条件的选择率修正 211
5.3 OpExpr的选择率 213
5.3.1 eqsel函数 215
5.3.2 scalargtsel函数 217
5.3.3 eqjoinsel函数 220
5.4 小结 226

第6章 扫描路径 227
6.1 代价(Cost) 228
6.1.1 代价基准单位 228
6.1.2 启动代价和整体代价 231
6.1.3 表达式代价的计算 233
6.2 路径(Path) 236
6.2.1 Path结构体 236
6.2.2 并行参数 237
6.2.3 参数化路径 239
6.2.4 PathKey 242
6.3 make_one_rel函数 244
6.4 普通表的扫描路径 245
6.4.1 顺序扫描 246
6.4.2 索引扫描 248
6.4.3 位图扫描 281
6.5 小结 291

第7章 动态规划和遗传算法 292
7.1 动态规划 293
7.1.1 make_rel_from_joinlist函数 297
7.1.2 standard_join_search函数 298
7.1.3 join_search_one_level函数 298
7.2 遗传算法 301
7.2.1 种群初始化 303
7.2.2 选择算子 308
7.2.3 交叉算子 310
7.2.4 适应度计算 311
7.3 小结 312

第8章 连接路径 313
8.1 检查 314
8.1.1 初步检查 314
8.1.2 精确检查 316
8.1.3 “合法”连接 318
8.2 生成新的RelOptInfo 324
8.3 虚表 327
8.4 Semi Join和唯一化路径 328
8.5 建立连接路径 331
8.5.1 sort_inner_and_outer函数 334
8.5.2 match_unsorted_outer函数 345
8.5.3 hash_inner_and_outer函数 350
8.6 路径的筛选 355
8.7 小结 360

第9章 Non-SPJ优化 361
9.1 集合操作处理 361
9.2 Non-SPJ路径 367
9.2.1 Non-SPJ预处理 368
9.2.2 Non-SPJ路径生成 376
9.3 小结 382

第10章 生成执行计划 383
10.1 转换流程 383
10.1.1 扫描计划 384
10.1.2 连接计划 390
10.2 执行计划树清理 391
10.3 小结 395

封面

POSTGRESQL技术内幕:查询优化深度探索

书名:POSTGRESQL技术内幕:查询优化深度探索

作者:张树杰

页数:412

定价:¥79.0

出版社:电子工业出版社

出版日期:2017-06-01

ISBN:9787121341489

PDF电子书大小:143MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注