计算机
类型
8.5
豆瓣评分
可以朗读
语音朗读
213千字
字数
2018-06-01
发行日期
展开全部
主编推荐语
本书深度分析PostgreSQL 10.0查询优化器,解析查询优化全流程,涵盖查询树、统计模块、逻辑物理优化等。
内容简介
查询优化器是数据库的大脑,负责对数据库中的查询语句进行内在的优化,虽然查询优化的理论已经比较成熟,但是由于它的“智能”和“黑盒”特性,这部分成了数据库内核开发中的难点。本书基于PostgreSQL最新的10.0版本分析了PostgreSQL数据库的查询优化器的源代码,依次解析了查询树、统计模块、逻辑优化、物理优化以及执行计划的生成,涉及到了全部的查询优化流程。本书不但对查询优化本身进行了解析,还扩展了查询优化的内容,例如对查询树进行了深入的介绍,因为查询树是查询优化器的输入信息,只有对查询树有比较深入的理解,才能了解查询优化尤其是逻辑优化的等价变换的内涵,另外,对基于最新的PostgreSQL数据库的并行查询功能以及和查询优化深度相关的统计模块也进行了介绍。
目录
- 封面
- 书名页
- 内容简介
- 版权页
- 序一
- 序二
- 前 言
- 目录
- 第1章 概述
- 1.1 查询优化的简介
- 1.2 逻辑优化
- 1.2.1 关系模型
- 1.2.2 逻辑优化示例
- 1.3 物理优化
- 1.3.1 物理优化的4个“法宝”
- 1.3.2 物理路径的生成过程
- 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.2.1 提升子连接
- 3.2.2 提升子查询
- 3.3 UNION ALL优化
- 3.4 展开继承表
- 3.5 预处理表达式
- 3.5.1 连接Var的溯源
- 3.5.2 常量化简
- 3.5.3 谓词规范
- 3.5.4 子连接处理
- 3.6 处理HAVING子句
- 3.7 Group By键值消除
- 3.8 外连接消除
- 3.9 grouping_planner的说明
- 3.10 小结
- 第4章 逻辑分解优化
- 4.1 创建RelOptInfo
- 4.1.1 RelOptInfo结构体
- 4.1.2 IndexOptInfo结构体
- 4.1.3 创建RelOptInfo
- 4.2 初识等价类
- 4.3 谓词下推
- 4.3.1 连接条件的下推
- 4.3.2 过滤条件的下推
- 4.3.3 连接顺序
- 4.3.4 deconstruct_recurse函数
- 4.3.5 make_outerjoininfo函数
- 4.3.6 distribute_qual_to_rels函数
- 4.3.7 reconsider_outer_join_clauses函数
- 4.3.8 generate_base_implied_equalities函数
- 4.3.9 记录表之间的等价关系
- 4.4 PlaceHolderVar的作用
- 4.5 Lateral语法的支持
- 4.5.1 Lateral的语义分析
- 4.5.2 收集Lateral变量
- 4.5.3 收集Lateral信息
- 4.6 消除无用连接项
- 4.7 Semi Join消除
- 4.8 提取新的约束条件
- 4.8.1 提取需要满足的条件
- 4.8.2 提取流程
- 4.8.3 选择率修正
- 4.9 小结
- 第5章 统计信息和选择率
- 5.1 统计信息
- 5.1.1 PG_STATISTIC系统表
- 5.1.2 PG_STATISTIC_EXT系统表
- 5.1.3 单列统计信息生成
- 5.1.4 多列统计信息生成
- 5.2 选择率
- 5.2.1 使用函数依赖计算选择率
- 5.2.2 子约束条件的选择率
- 5.2.3 基于范围的约束条件的选择率修正
- 5.3 OpExpr的选择率
- 5.3.1 eqsel函数
- 5.3.2 scalargtsel函数
- 5.3.3 eqjoinsel函数
- 5.4 小结
- 第6章 扫描路径
- 6.1 代价(Cost)
- 6.1.1 代价基准单位
- 6.1.2 启动代价和整体代价
- 6.1.3 表达式代价的计算
- 6.2 路径(Path)
- 6.2.1 Path结构体
- 6.2.2 并行参数
- 6.2.3 参数化路径
- 6.2.4 PathKey
- 6.3 make_one_rel函数
- 6.4 普通表的扫描路径
- 6.4.1 顺序扫描
- 6.4.2 索引扫描
- 6.4.3 位图扫描
- 6.5 小结
- 第7章 动态规划和遗传算法
- 7.1 动态规划
- 7.1.1 make_rel_from_joinlist函数
- 7.1.2 standard_join_search函数
- 7.1.3 join_search_one_level函数
- 7.2 遗传算法
- 7.2.1 种群初始化
- 7.2.2 选择算子
- 7.2.3 交叉算子
- 7.2.4 适应度计算
- 7.3 小结
- 第8章 连接路径
- 8.1 检查
- 8.1.1 初步检查
- 8.1.2 精确检查
- 8.1.3 “合法”连接
- 8.2 生成新的RelOptInfo
- 8.3 虚表
- 8.4 Semi Join和唯一化路径
- 8.5 建立连接路径
- 8.5.1 sort_inner_and_outer函数
- 8.5.2 match_unsorted_outer函数
- 8.5.3 hash_inner_and_outer函数
- 8.6 路径的筛选
- 8.7 小结
- 第9章 Non-SPJ优化
- 9.1 集合操作处理
- 9.2 Non-SPJ路径
- 9.2.1 Non-SPJ预处理
- 9.2.2 Non-SPJ路径生成
- 9.3 小结
- 第10章 生成执行计划
- 10.1 转换流程
- 10.1.1 扫描计划
- 10.1.2 连接计划
- 10.2 执行计划树清理
- 10.3 小结
- 反侵权盗版声明
- 封底
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。