作品简介

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

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

作品目录

  • 内容简介
  • 序一
  • 序二
  • 前  言
  • 第1章 概述
  • 1.1 查询优化的简介
  • 1.2 逻辑优化
  • 1.3 物理优化
  • 1.4 文件介绍
  • 1.5 示例的约定
  • 1.6 小结
  • 第2章 查询树
  • 2.1 Node的结构
  • 2.2 Var结构体
  • 2.3 RangeTblEntry结构体
  • 2.4 RangeTblRef结构体
  • 2.5 JoinExpr结构体
  • 2.6 FromExpr结构体
  • 2.7 Query结构体
  • 2.8 查询树的展示
  • 2.9 查询树的遍历
  • 2.10 执行计划的展示
  • 2.11 小结
  • 第3章 逻辑重写优化
  • 3.1 通用表达式
  • 3.2 子查询提升
  • 3.3 UNION ALL优化
  • 3.4 展开继承表
  • 3.5 预处理表达式
  • 3.6 处理HAVING子句
  • 3.7 Group By键值消除
  • 3.8 外连接消除
  • 3.9 grouping_planner的说明
  • 3.10 小结
  • 第4章 逻辑分解优化
  • 4.1 创建RelOptInfo
  • 4.2 初识等价类
  • 4.3 谓词下推
  • 4.4 PlaceHolderVar的作用
  • 4.5 Lateral语法的支持
  • 4.6 消除无用连接项
  • 4.7 Semi Join消除
  • 4.8 提取新的约束条件
  • 4.9 小结
  • 第5章 统计信息和选择率
  • 5.1 统计信息
  • 5.2 选择率
  • 5.3 OpExpr的选择率
  • 5.4 小结
  • 第6章 扫描路径
  • 6.1 代价(Cost)
  • 6.2 路径(Path)
  • 6.3 make_one_rel函数
  • 6.4 普通表的扫描路径
  • 6.5 小结
  • 第7章 动态规划和遗传算法
  • 7.1 动态规划
  • 7.2 遗传算法
  • 7.3 小结
  • 第8章 连接路径
  • 8.1 检查
  • 8.2 生成新的RelOptInfo
  • 8.3 虚表
  • 8.4 Semi Join和唯一化路径
  • 8.5 建立连接路径
  • 8.6 路径的筛选
  • 8.7 小结
  • 第9章 Non-SPJ优化
  • 9.1 集合操作处理
  • 9.2 Non-SPJ路径
  • 9.3 小结
  • 第10章 生成执行计划
  • 10.1 转换流程
  • 10.2 执行计划树清理
  • 10.3 小结
  • 反侵权盗版声明
展开全部