Oracle公司MySQL全球开发团队资深专家撰写,拥有10余年数据库查询优化器和内核研究经验,数据库领域泰斗王珊教授亲自作序推荐
PostgreSQL中国社区和中国用户会发起人,以及来自Oracle、新浪、网易、华为等企业的数位资深数据库专家联袂推荐
从原理角度深度解读和展示数据库查询优化器的技术细节和全貌;从源码实现角度全方位深入分析MySQL和PostGreSQL两大主流开源数据库查询优化器的实现原理;从工程实践的角度对比了两大数据库的查询优化器的功能异同和实现异同
《数据库技术丛书·数据库查询优化器的艺术:原理解析与SQL性能优化》是数据库查询优化领域的里程碑之作,由Oracle公司MySQL全球开发团队、资深专家撰写,作者有10余年数据库内核和查询优化器研究经验。数据库领域泰斗王珊教授亲自作序推荐,PostgreSQL中国社区和中国用户会发起人以及来自Oracle、新浪、网易、华为等企业的数位资深数据库专家联袂推荐。从原理角度深度解读和展示数据库查询优化器的技术细节和全貌;从源码实现角度全方位深入分析MySQL和PostgreSQL两大主流开源数据库查询优化器的实现原理;从工程实践的角度对比了两大数据库的查询优化器的功能异同和实现异同。它是所有数据开发工程师、内核工程师、DBA以及其他数据库相关工作人员值得反复研读的一本书。
《数据库技术丛书·数据库查询优化器的艺术:原理解析与SQL性能优化》共19章,分为四个部分:第一篇(第1~4章)对数据库查询优化技术的范围、逻辑查询优化、物理查询优化,以及查询优化器与其他模块的关系做了非常细致、深入的讲解;第二篇(第5~10章)首先从源码角度对PostgreSQL查询优化器的架构、层次、设计思想、相关数据结构和实现原理进行了深入、系统的分析,然后从功能角度对PostgreSQL的逻辑查询优化、物理查询优化、查询优化器的关键算法,以及PostgreSQL查询优化器与其他模块的关系做了深入的讲解;第三篇(第11~16章)首先从源码角度对MySQL查询优化器的架构、层次、设计思想、相关数据结构和实现原理进行了深入、系统的分析,然后从功能角度对MySQL的逻辑查询优化、物理查询优化、查询优化器的关键算法,以及MySQL查询优化器与其他模块的关系做了深入的讲解;第四篇(第17~19章)对PostgreSQL与MySQL的逻辑查询优化技术、物理查询优化技术、设计思想和编码规范等各方面进行了深度的比较。
李海翔(网名:那海蓝蓝)
资深数据专家,拥有近20年数据库内核研发经验,曾就职于人大金仓、Oracle公司MySQL全球开发组等,现就职于腾讯TEG计费平台部,T4级专家。中国人民大学工程硕士企业导师。
数据库技术精湛,不仅熟悉PostgreSQL、GreenPlum、MySQL、Informix、CockroachDB等数据库的使用,而且熟悉它们的源码,尤其擅长数据库的查询优化技术、事务处理技术和数据库架构技术。数据库相关工作阅历丰富,从事过数据库研发(JDBC驱动、管理工具套机、内核)、数据库测试、技术团队管理、数据库架构设计等多个岗位。
曾获得北京市科学技术进步奖一等奖和腾讯公司级技术突破奖,做过包括863、核高基、工信部、科技部、发改委、北京市科委等多个重大科技项目在内的30多个国家*大型项目。
除本书外,还撰写并出版了本书的姊妹篇《数据库事务处理的艺术:事务管理与并发控制》。
推荐序一
推荐序二
前言
第一篇 查询优化技术
第1章 数据管理系统的查询优化
1.1 数据库调优
1.2 查询优化技术
1.2.1 查询重用
1.2.2 查询重写规则
1.2.3 查询算法优化
1.2.4 并行查询优化
1.2.5 分布式查询优化
1.2.6 其他优化
1.3 本章小结
第2章 逻辑查询优化
2.1 查询优化技术的理论基础
2.1.1 关系代数
2.1.2 关系代数等价变换规则对优化的指导意义
2.2 查询重写规则
2.2.1 子查询的优化
2.2.2 视图重写
2.2.3 等价谓词重写
2.2.4 条件化简
2.2.5 外连接消除
2.2.6 嵌套连接消除
2.2.7 连接消除
2.2.8 语义优化
2.2.9 针对非SPJ的优化
2.3 启发式规则在逻辑优化阶段的应用
2.4 本章小结
第3章 物理查询优化
3.1 查询代价估算
3.1.1 代价模型
3.1.2 选择率计算的常用方法
3.2 单表扫描算法
3.2.1 常用的单表扫描算法
3.2.2 单表扫描代价计算
3.3 索引
3.3.1 如何利用索引
3.3.2 索引列的位置对使用索引的影响
3.3.3 联合索引对索引使用的影响
3.3.4 多个索引对索引使用的影响
3.4 两表连接算法
3.4.1 基本的两表连接算法
3.4.2 进一步认识两表连接算法
3.4.3 连接操作代价计算
3.5 多表连接算法
3.5.1 多表连接顺序
3.5.2 常用的多表连接算法
3.5.3 多表连接算法的比较
3.6 本章小结
第4章 查询优化器与其他模块的关系
4.1 查询优化器整体介绍
4.2 查询优化器与其他模块的关系
4.3 本章小结
第二篇 PostgreSQL查询优化器原理解析
第5章 PostgreSQL查询优化器概述
5.1 PostgreSQL查询执行过程
5.2 PostgreSQL查询优化器的架构和设计思想
5.2.1 PostgreSQL查询优化器架构
5.2.2 PostgreSQL查询优化器的层次
5.2.3 PostgreSQL查询优化器设计思想
5.3 主要概念
5.4 代码层次结构
5.5 本章小结
第6章 PostgreSQL查询优化器相关数据结构
6.1 主要数据结构
6.1.1 基本数据结构
6.1.2 查询树
6.1.3 各种对象的结构
6.1.4 连接操作相关的结构
6.1.5 查询执行计划相关的结构
6.2 各个结构之间的关系
6.3 各个阶段间和主要结构体间的关系
6.4 本章小结
第7章 PostgreSQL查询优化器实现原理解析
7.1 查询优化整体流程
7.2 查询优化器实现原理解析
7.2.1 planner--主入口函数
7.2.2 standard_planner--标准的查询优化器函数
7.2.3 subquery_planner--生成(子)查询执行计划函数
7.2.4 grouping_planner--生成查询执行计划并对非SPJ优化
7.2.5 build_minmax_path--聚集函数MIN/MAX的优化函数
7.2.6 query_planner--生成最优的查询路径函数
7.2.7 make_one_rel--构造多表连接路径并选出最优路径函数
7.2.8 make_rel_from_joinlist--生成多表连接路径函数
7.2.9 optimize_minmax_aggregates--聚集操作MIN/MAX优化函数
7.2.10 create_plan--创建查询执行计划函数
7.2.11 非SPJ处理--grouping_planner的各个子模块
7.2.12 其他重要的函数与操作
7.3 代价估算实现原理解析
7.3.1 查询代价估算
7.3.2 单表扫描方式的代价估算
7.3.3 两表连接的代价估算
7.3.4 其他代价估算函数
7.3.5 选择率的计算
7.4 从目录结构和文件功能角度看查询优化器
7.4.1 查询优化子模块与主要文件的关系
7.4.2 查询优化器代码结构
7.5 本章小结
第8章 从功能的角度看PostgreSQL查询优化
8.1 优化器之逻辑查询优化
8.1.1 视图重写
8.1.2 子查询优化
8.1.3 等价谓词重写
8.1.4 条件化简
8.1.5 外连接消除
8.1.6 嵌套连接消除
8.1.7 连接的消除
8.1.8 语义优化
8.1.9 选择操作下推
8.1.10 非SPJ优化
8.2 优化器之物理查询优化
8.2.1 PostgreSQL的物理优化主要完成的工作
8.2.2 启发式规则在物理查询优化阶段的使用
8.2.3 两表连接
8.2.4 代价估算
8.2.5 PostgreSQL的索引与查询优化
8.3 其他
8.3.1 grouping_planner函数主干再分析
8.3.2 用户指定的连接语义与PostgreSQL实现两表连接的函数及算法的关系
8.3.3 集合操作优化
8.4 本章小结
第9章 PostgreSQL查询优化的关键算法
9.1 动态规划算法
9.1.1 动态规划算法的处理流程
9.1.2 紧密树处理流程
9.2 遗传算法
9.2.1 PostgreSQL遗传算法的处理流程
9.2.2 主要的数据结构
9.2.3 主要的函数和变量
9.2.4 应用遗传算法实现表连接的语义
9.2.5 应用遗传算法计算适应度
9.2.6 进一步理解PostgreSQL的遗传算法
9.3 动态规划算法与遗传算法对比
9.4 本章小结
第10章 PostgreSQL查询优化器与其他部分的关系
10.1 查询优化器与语法分析器
10.2 查询优化器与执行器
10.3 查询优化器与缓冲区管理模块
10.4 查询优化器与对象访问模块
10.5 查询优化器与统计模块
10.6 查询优化器与索引模块
10.7 本章小结
第三篇 MySQL查询优化器原理解析
第11章 MySQL查询优化器概述
11.1 MySQL查询执行过程
11.2 MySQL查询优化器的架构和设计思想
11.2.1 MySQL查询优化器架构
11.2.2 MySQL查询优化器的层次
11.2.3 MySQL查询优化器设计思想
11.3 主要概念
11.3.1 常量表
11.3.2 表数据的访问方式
11.4 代码层次结构
11.5 本章小结
第12章 MySQL查询优化器相关数据结构
12.1 主要的类和数据结构
12.1.1 查询树
12.1.2 基本对象
12.1.3 连接对象与执行计划
12.1.4 代价估算类
12.2 各个阶段主要结构体间的关系
12.3 本章小结
第13章 MySQL查询优化器的原理解析
13.1 查询优化器整体流程
13.2 优化器的代码详解
13.2.1 JOIN.prepare--优化前的准备工作
13.2.2 JOIN.optimize--优化器主入口方法
13.2.3 make_join_statistics--计算最优的查询优化执行计划
13.2.4 choose_table_order--求解多表连接最优连接路径
13.2.5 make_join_statistics函数的其他子函数
13.2.6 make_join_select--对条件求值、下推连接条件到表中
13.2.7 test_if_skip_sort_order--排序操作的优化
13.2.8 make_join_readinfo--为连接的每个表构造信息
13.2.9 JOIN.exec--执行查询执行计划的函数
13.3 代价估算
13.3.1 查询代价估算模型
13.3.2 查询代价估算过程
13.3.3 其他的代价估算
13.3.4 对存储引擎的调用接口
13.3.5 统计信息
13.4 本章小结
第14章 从功能的角度看MySQL查询优化
14.1 优化器之逻辑查询优化
14.1.1 视图重写
14.1.2 子查询优化
14.1.3 等价谓词重写
14.1.4 条件化简
14.1.5 外连接消除
14.1.6 嵌套连接消除
14.1.7 连接的消除
14.1.8 语义优化
14.1.9 非SPJ优化
14.2 优化器之物理查询优化
14.2.1 MySQL的物理优化主要完成的工作
14.2.2 启发式规则在物理查询优化阶段的使用
14.2.3 MySQL的索引与查询优化
14.2.4 用户指定的连接语义与MySQL实现两表连接的算法
14.3 本章小结
第15章 MySQL查询优化的关键算法
15.1 深入理解MySQL的多表连接算法
15.2 本章小结
第16章 MySQL查询优化器与其他部分的关系
16.1 查询优化器与语法分析器
16.2 查询优化器与执行器
16.3 查询优化器与缓冲区管理模块
16.4 查询优化器与索引模块
16.5 本章小结
第四篇 PostgreSQL查询优化器VSMySQL查询优化器
第17章 PostgreSQL和MySQL的逻辑查询优化技术
17.1 查询重写
17.1.1 子查询优化
17.1.2 视图重写
17.1.3 等价谓词重写
17.1.4 条件化简
17.1.5 外连接消除
17.1.6 嵌套连接消除
17.1.7 连接消除
17.1.8 语义优化
17.2 非SPJ的优化
17.3 本章小结
第18章 PostgreSQL和MySQL的物理查询优化技术
18.1 查询代价估算模型比较
18.2 单表扫描算法
18.3 索引
18.4 两表连接算法
18.5 多表连接算法
18.6 本章小结
第19章 PostgreSQL和MySQL的其他异同
19.1 启发式规则的使用比较
19.2 综合比较
19.2.1 基本概念的比较
19.2.2 数据结构的比较
19.2.3 设计思想的比较
19.2.4 编码规范的比较
19.3 本章小结
附录A 如何掌握数据库内核
附录B 如何阅读本书
附录C 如何阅读查询执行计划
附录D 如何跟踪查询执行计划
我是一名刚刚接触数据库开发的初学者,这本书的书名让我感到既有挑战又充满期待。虽然我对“查询优化器”这个词汇还不太熟悉,但“艺术”和“原理解析”等字眼,让我觉得这本书不仅仅是枯燥的技术手册,更蕴含着一种精妙的智慧。我希望这本书能用一种循序渐进的方式,从最基础的概念讲起,逐步深入到查询优化器的核心。我期待能够理解为什么SQL语句会有不同的执行计划,以及为什么某些写法比另一些写法性能更好。我希望书中能有一些生动的图示和形象的比喻,帮助我这个新手更容易地理解那些复杂的算法和数据结构。如果能有一些小型的练习题,让我能够动手实践,验证自己的理解,那就更完美了。我渴望通过这本书,能够建立起对数据库性能的直观认识,避免在开发过程中走弯路,早日成为一名能够写出高效SQL的开发者。这本书对我来说,就像是一本通往数据库性能殿堂的入门指南,我迫不及待地想翻开它,探索其中的奥秘。
评分这本书的名字确实很吸引人,光看书名就能感受到作者的深厚功力。作为一个在数据库领域摸爬滚打多年的开发者,我一直在寻找能够深入理解数据库查询优化器内部机制的资料,这本书恰好满足了我的这一期望。我特别期待能够从书中学习到各种优化策略的原理,例如索引的选择、查询计划的生成、谓词下推、连接顺序的确定等等。我希望它不仅能提供理论知识,更能通过实际的案例分析,教会我如何诊断和解决复杂的SQL性能问题。想象一下,当面对那些难以捉摸的慢查询时,能够不再束手无策,而是能有条不紊地分析问题根源,并给出高效的解决方案,那将是多么大的提升!我希望这本书能成为我手中一把锋利的解剖刀,让我能够庖丁解牛般地剖析SQL语句,洞察数据库优化器的每一个决策,最终达到“指点江山,优化无形”的境界。更进一步,我也希望能从中学习到如何根据不同的业务场景和数据特点,定制化地调整数据库参数和优化策略,以达到最佳的性能表现。这本书不仅仅是关于SQL的优化,更是关于如何构建高效、可伸缩的数据库系统的底层逻辑。
评分作为一个资深的数据库 DBA,我见过太多关于性能调优的“秘籍”,但真正能够深入剖析原理、提供系统性解决方案的书籍却寥寥无几。这本书的书名《数据库技术丛书·数据库查询优化器的艺术:原理解析与SQL性能优化》让我眼前一亮。我尤其关注“原理解析”这部分,希望它能够深入讲解查询优化器内部的决策过程,例如代价模型、统计信息的作用、启发式规则等等。我期待这本书能够提供一些实用的诊断技巧和工具,帮助我们快速定位性能瓶颈,而不是仅仅停留在理论层面。同时,“SQL性能优化”部分,我希望能够看到针对不同数据库系统(如MySQL、PostgreSQL、Oracle等)的共性和特性进行分析,并给出具体的优化建议,例如如何编写更有效的SQL语句,如何设计更合理的索引,如何进行表结构优化等。我希望这本书能够成为我日常工作中处理复杂性能问题的参考宝典,帮助我更自信、更高效地管理数据库系统。
评分我是一名在互联网公司从事数据分析工作的技术人员,我们每天都需要处理海量的数据,SQL的性能对我们的工作效率至关重要。这本书的书名听起来非常专业,让我对它的内容充满了好奇。我希望这本书能够教会我如何从数据分析师的角度去理解和优化SQL查询。例如,我希望能够学习到如何根据数据量和数据分布来预测SQL的执行效率,如何选择最适合的查询语句来满足分析需求,以及如何利用数据库的特性来提升查询速度。我并不需要深入到查询优化器的底层代码,而是希望能够理解其核心思想,并将其应用到日常的数据提取和处理中。我期待书中能够提供一些常见数据分析场景下的SQL优化案例,让我能够借鉴和学习。对我来说,这本书不仅仅是一本技术书籍,更是一种能力的提升,能够让我更快、更准确地从数据中挖掘出有价值的信息。
评分这本书的名字听起来非常高屋建瓴,仿佛能够带领读者窥探数据库性能调优的“最高机密”。我尤其对“艺术”这个词感到好奇,它暗示了在冰冷的算法和代码之外,还存在着一种更具创造性和洞察力的层面。我希望这本书能够不仅仅是罗列各种优化技巧,而是能够引导读者去思考“为什么”要这样做,去理解背后的逻辑和权衡。我期待能够从书中学习到如何建立一种“优化思维”,能够举一反三,触类旁通。也许它会介绍一些鲜为人知的优化技巧,或者是对现有优化方法进行更深层次的剖析,让我能够看到别人看不到的细节。我希望这本书能够拓展我的视野,让我不再局限于书本上的例子,而是能够独立思考,创造出属于自己的优化解决方案。这本书对我而言,更像是一次思维的洗礼,一次对数据库性能艺术的探索之旅。
评分书山有路勤为径,学海无涯苦作舟
评分pg类的资料是很少的,又涉及到mysql,对学习查询原理很有帮助
评分羞答答的邪恶奋斗着的
评分购入准备慢慢读。购入准备慢慢读。
评分还没看,希望不是贴代码的书
评分比较难看懂,都是代码分析和理论,感觉很抽象,可能对数据库原理了解太少了。不适合初学者。
评分有点专业了,要看很久呢!
评分可以方便查询和理解原理.
评分非常好啊非常好啊非常好啊非常好啊非常好啊非常好啊非常好啊非常好啊非常好啊
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有