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

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

内容简介

查询优化器是数据库中很重要的模块之一,只有掌握好查询优化的方法且了解查询优化的细节,在对数据库调优的过程中才能有的放矢,否则调优的过程就如无本之木、无源之水,虽上下求索而不得其法。

《PostgreSQL技术内幕:查询优化深度探索》揭示了PostgreSQL数据库中查询优化的实现技术细节,首先对子查询提升、外连接消除、表达式预处理、谓词下推、连接顺序交换、等价类推理等逻辑优化方法进行了详细描述,然后结合统计信息、选择率、代价对扫描路径创建、路径搜索方法、连接路径建立、Non-SPJ路径建立、执行计划简化与生成等进行了深度探索,使读者对PostgreSQL数据库的查询优化器有深层次的了解。

《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

会员免费下载

链接:https://pan.baidu.com/s/1p_wvhwmvRaVoFlitYuKq9w

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

PostgreSQL

资源推荐

Oracle数据库性能优化方法论和最佳实践

Oracle数据库管理从入门到精通

Oracle PL/SQL DBA编程入门

高性能MySQL(第3版)

Oracle PLSQL性能调优诀窍与方法

MySQL王者晋级之路

数据库系统导论(原书第8版)

PostgreSQL实战

Copyright © 2021-2022 知识猫. All Rights Reserved.