当前位置:主页 > 计算机电子书 > 数据库 > PostgreSQL技术下载
PostgreSQL技术内幕:查询优化深度探索

PostgreSQL技术内幕:查询优化深度探索 PDF 中文超清版

  • 更新:2024-04-08
  • 大小:244.84 MB
  • 类别:PostgreSQL技术
  • 作者:张树杰
  • 出版:电子工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

PostgreSQL技术内幕:查询优化深度探索》是一本极具价值的数据库技术书籍,它涵盖了许多关键的主题,如PostgreSQL的查询优化、源码解析和架构分析,通过深入剖析数据库的关键细节,并结合一线案例,彭煜玮、Digoal(德哥)、蚂蚁金服、JD、阿里巴巴等业内专家的力荐,读者能够获得宝贵的知识和经验,为十年数据库内核的修炼之道提供了重要的指导,无论是对于新手还是有经验的数据库工程师,这本书都是不可或缺的参考资料。

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

PostgreSQL技术内幕:查询优化深度探索 电子书封面

内容介绍

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

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

适合数据库内核开发人员及相关领域的研究人员、数据库DBA、高等院校相关专业的本科生或者研究生阅读。

目录

  • 第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

资源下载

资源下载地址1:https://pan.quark.cn/s/44e69bbff4c8

网友留言

网友NO.27430
胡景龙

数据库操作 切换数据库,相当于mysql的use dbname \c dbname 列举数据库,相当于mysql的show databases \l 列举表,相当于mysql的show tables \dt 查看表结构,相当于desc tblname,show columns from tbname \d tblname \di 查看索引  创建数据库:  create database [数据库名];  删除数据库:  drop database [数据库名];   *重命名一个表:  alter table [表名A] rename to [表名B];  *删除一个表:  drop table [表名]; 

网友NO.44069
任锐逸

近两天总结了下PostgreSQL的基本操作命令,对PostgreSQL也有了一个基本的认识。 PostgreSQL的功能还是很丰富的,有序列,支持db link,基本Oracle里有的概念它这里也有,目前来看不支持package。 风格和Oracle也类似,没有MySQL中快捷方便的show create table 这样的语句。 从我的使用习惯来说,我基本关注以下的一些方面。 查看数据库的配置 查看用户信息 查看会话连接信息 show tables的类似方法 用户的权限查看 建表语句 表空间信息 对象存储信息 查看锁的信息 查看数据库参数 显示数据库的运行状态 查看数据字典的信息 查看索引的信息 查看执行计划 查看存储过程 存储过程的调度执行 事务隔离级别