Oracle高性能SQL引擎剖析
2013-1-10
黄玮 机械工业出版社 (2013-01出版)
黄玮
458
无
《数据库技术丛书·Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》是Oracle数据库性能优化领域的里程碑之作,通过对Oracle高性能SQL引擎的深入剖析,深刻揭示了OracleSQL的优化与调优机制、核心技术,以及性能优化的思想方法,是作者十余年工作经验与研究心得的结晶,包含大量技巧与最佳实践。 《数据库技术丛书·Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》共分为三个部分。第一篇“执行计划”,首先详细讲解了各种执行计划的含义与操作,为后面的深入分析打下基础;然后重点讲解了执行计划在SQL语句执行的生命周期中所处的位置和作用,SQL引擎如何生成执行计划以及如何获取SQL语句的执行计划,如何从各种数据源显示和查看已经生成执行计划等。第二篇“SQL优化技术”,深入分析了Oracle的SQL优化技术,包括逻辑优化技术和物理优化技术,用大量示例详尽分析了Oracle中现有的各种查询转换技术。第三篇“SQL调优技术”,深入剖析了Oracle提供的各项调优技术,首先对语句实际运行的性能统计数据进行了深度分析,介绍了各项统计数据是由什么操作导致的以及如何统计;然后讲解了如何对SQL语句进行优化,以及如何获得稳定、高效的性能;最后,根据对SQL优化及调优技术的分析,总结如何快速优化SQL的思路。
黄玮,资深Oracle数据库管理员,从事DBA工作十几年,有丰富的大型数据库开发、设计和维护经验,涉及水利、军工、电信及航运等行业。目前供职于某世界著名物流公司,负责公司的电子物流系统的数据库开发、维护工作。2005年创建个人网站www.HelloDBA.com,并致力于数据库方面的基础性技术研究,整理和发布了大量关于数据库系统的底层机制、存储结构、性能调优以及基础算法的文章,开发了多个数据恢复、性能监控、内核跟踪等免费的实用工具,为Oracle社区做出了应有的贡献。
序前言第一篇 执行计划第1章 生成和显示执行计划 31.1 生成执行计划 31.2 显示执行计划 41.2.1 通过查询语句显示计划 41.2.2 通过包DBMS_XPLAN显示计划 41.2.3 AUTOTRACE 121.2.4 其他方法 13第2章 解读执行计划 152.1 执行计划的基本数据 152.2 内部函数与操作 172.3 执行计划各个列的含义 192.4 执行计划各个操作的含义 212.4.1 语句类型 212.4.2 访问路径方法 232.4.3 位图操作 312.4.4 排序操作 332.4.5 关联操作 362.4.6 层次查询操作 422.4.7 视图操作 452.4.8 数据集合操作 452.4.9 分区操作 482.4.10 并行查询操作 512.4.11 聚合操作 572.4.12 分析函数操作 582.4.13 模型化操作 602.4.14 数据和对象管理操作 632.4.15 其他操作 652.5 执行计划中其他信息的含义 692.5.1 查询块和对象别名 692.5.2 计划概要数据 702.5.3 绑定变量信息 702.5.4 分布式查询语句信息 722.5.5 注释 72第二篇 SQL优化技术第3章 查询转换 753.1 启发式查询转换 753.1.1 简单视图合并 763.1.2 子查询反嵌套 813.1.3 子查询推进 863.1.4 旧关联谓词推入 873.1.5 简单过滤谓词推入 903.1.6 谓词迁移 913.1.7 “或”操作扩张 913.1.8 物化视图查询重写 923.1.9 集合操作关联转变 943.1.10 由约束生成过滤谓词 953.1.11 星形转换 963.1.12 排序消除 983.1.13 DISTINCT消除 993.1.14 表消除 993.1.15 子查询合并 1023.1.16 公共子表达式消除 1043.1.17 计数函数转变 1053.1.18 表达式和条件评估 1053.1.19 聚集子查询消除 1113.1.20 DISTINCT聚集函数转换 1113.1.21 选择字段裁剪 1133.1.22 DISTINCT消除 1143.1.23 DISTINCT推入 1143.1.24 集合分组查询转换 1153.1.25 集合分组查询重写 1153.1.26 集合分组裁剪 1173.1.27 外关联消除 1183.1.28 真正完全外关联 1193.1.29 左(右)外关联转换为侧视图 1203.2 基于代价的查询转换 1233.2.1 复杂视图合并 1233.2.2 关联谓词推入 1243.2.3 谓词提取 1263.2.4 GROUP BY配置 1273.2.5 表扩张 1283.2.6 关联因式分解 1303.2.7 DISTINCT配置 1313.2.8 WITH子查询转换 132第4章 统计数据 1344.1 系统统计数据 1344.1.1 系统统计数据收集 1364.1.2 系统统计数据管理 1374.1.3 根据系统负载状况灵活管理 1404.1.4 全局参数管理 1424.1.5 项管理 1434.2 对象统计数据 1464.2.1 表统计数据 1504.2.2 索引统计数据 1504.2.3 字段统计数据 1514.2.4 扩展统计数据 1524.2.5 对象统计数据的管理 1534.2.6 “待定”统计数据的管理 1604.3 对象统计数据收集过程分析 1614.3.1 表统计数据收集与计算 1614.3.2 字段统计数据收集与计算 1644.3.3 柱状图数据收集与计算 1704.3.4 索引统计数据收集与计算 182第5章 执行计划的代价估算 1865.1 代价模型 1875.2 基本代价计算公式 1875.3 选择率计算 1905.3.1 单过滤条件 1905.3.2 绑定变量无具体数值 1905.3.3 绑定变量有数值无柱状图 1915.3.4 使用柱状图 1925.3.5 过滤条件的组合 1965.4 多数据块读操作代价计算 1975.4.1 代价模型 1975.4.2 IO代价计算 1995.4.3 CPU代价计算 2025.4.4 执行计划中其他数据的计算 2095.4.5 全表扫描代价计算演示 2095.5 并行扫描操作代价计算 2185.5.1 IO代价计算 2195.5.2 CPU代价计算 2215.6 单数据块读操作代价计算 2225.6.1 IO代价计算 2225.6.2 CPU代价计算 2265.6.3 单数据块读操作代价计算演示 2285.7 排序操作代价计算 2335.7.1 是否需要写入磁盘 2335.7.2 IO代价计算 2345.7.3 CPU代价计算 2365.7.4 临时磁盘空间计算 2365.7.5 排序代价计算演示 2375.8 关联操作代价计算 2415.8.1 关联选择率 2425.8.2 嵌套循环关联代价计算 2425.8.3 排序合并关联代价计算 2495.8.4 哈希关联代价计算 2525.9 并行模式下的关联代价计算 2605.9.1 IO代价计算 2625.9.2 CPU代价计算 2635.9.3 代价计算演示 263第三篇 SQL调优技术第6章 SQL语句运行性能分析 2706.1 性能统计数据 2706.1.1 逻辑读 2726.1.2 一致性获取 2736.1.3 一致性直接获取 2736.1.4 由缓存一致性获取 2736.1.5 一致性修改 2746.1.6 数据块修改 2756.1.7 物理读入缓存 2766.1.8 物理预提取读入缓存 2766.1.9 排序数据行 2776.1.10 递归调用 2786.2 逻辑读分析 2806.2.1 一致性读分析 2806.2.2 当前模式读分析 3096.3 物理读分析 3196.3.1 物理直接读 3196.3.2 物理读入缓存与LRU算法 378第7章 Oracle调优技术 3877.1 存储概要 3877.1.1 什么是存储概要 3887.1.2 创建存储概要 3897.1.3 管理存储概要 3917.1.4 使用存储概要 3927.2 SQL执行计划管理 3947.2.1 创建和增加执行计划基线 3957.2.2 进化历史执行计划 4057.2.3 优化器从基线中选择执行计划 4077.3 Oracle自动调优 4097.3.1 创建调优任务 4107.3.2 SQL调优建议器的参数 4107.3.3 自动调优分析 4127.4 SQL性能分析器 4237.4.1 性能分析过程 4247.4.2 SQL性能分析示例 4267.5 SQL访问建议器 4287.5.1 建议器选择新索引分析过程 4287.5.2 使用SQL访问建议器 433第8章 快速调优思路 4418.1 统计数据检查 4418.2 从执行计划中找到潜在问题 4448.2.1 是否存在多个游标 4448.2.2 输出结果中特别注释 4478.2.3 存在潜在性能问题的操作 4488.2.4 谓词信息 4528.2.5 概要数据以及优化器环境检查 4558.3 物理设计优化 4568.3.1 索引 4568.3.2 分区 4578.3.3 物化视图 4588.3.4 约束 458
第一篇 执行计划执行计划是指示Oracle如何获取和过滤数据、产生最终结果集,是影响SQL语句执行性能的关键因素。我们在深入了解执行计划之前,首先需要知道执行计划是在什么时候产生的,以及如何让SQL引擎为语句生成执行计划。在深入了解执行计划之前,我们先了解SQL语句的处理执行过程。当一条语句提交到Oracle后,SQL引擎会分为三个步骤对其处理和执行:解析(Parse)、执行(Execute)和获取(Fetch),分别由SQL引擎的不同组件完成。SQL引擎的组件如图1-1所示。1. SQL编译器(SQL Compiler)将语句编译到一个共享游标中。SQL编译器由解析器(Parser)、查询优化器(Query Optimizer)和行源生成器(Row Source Generator)组成。q 解析器(Parser)—执行对SQL语句的语法、语义分析,将查询中的视图展开、划分为小的查询块。q 查询优化器(Query Optimizer)—为语句生成一组可能被使用的执行计划,估算出每个执行计划的代价,并调用计划生成器(Plan Generator)生成计划,比较计划的代价,最终选择选择一个代价最小的计划。查询优化器由查询转换器(Query Transform)、代价估算器(Estimator)和计划生成器(Plan Generator)组成。注意,上述优化器实际上指的是基于代价的优化器(Cost Based Optimizer,CBO),CBO也是当前采用的所有优化和调优技术的核心基础。
黄玮是个实证派,而研究优化器算法,也唯有实证派才能够胜任。他通过大量测试进行推演,从而破解CBO计算法则,这不仅需要深入的计算机知识,也需要极大的耐心和毅力。这满纸的公式与数字对于读者来说,可能会成为过眼云烟;而对于作者来说,却是锱铢必较的艰苦之旅。——盖国强云和恩墨创始人、OracleACE总监、ITPUB论坛超级版主
《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》编辑推荐:资深Oracle DBA黄玮(Fuyuncat)十年磨一剑,深入揭示Oracle SQL优化与调优的原理、核心技术与思想方法,盖国强鼎力推荐!
黄玮是个实证派,而研究优化器算法,也唯有实证派才能够胜任,他通过大量测试进行推演,从而破解CBO计算法则,这不仅需要深入的计算机知识,也需要极大的耐心和毅力,这满纸的数字对于读者来说,可能会成为过眼云烟,而对于作者来说,却是锱铢必较的艰苦之旅。——盖国强 云和恩墨创始人、Oracle ACE总监、ITPUB论坛超级版主
无
不适合初学者现在大部分看不懂,等有时间再看
书收到了。里面的内容还在仔细研读中。我昨天今天两个订单都是超过99元 ,都有赠书,坑爹的 亚马逊今天给我 把两本赠书 都“单独”“包装”“出售”给我,我果断拒收!现在 亚马逊貌似换了 物流配送单位,不进校门,并且今天没给我发短信,害我饭都没吃成急急忙忙去取书!反而送货的还责怪我!上次也是不进校门,你们改进服务,总结工作失误,只想捞钱的话,我就去京东等买!
真的看不懂,适合数学家级别的超高级DBA用。
如果你喜欢深究oraclesql技术,此书一定会满足你的好奇心
谁看了谁知道,我反正是不知道
深入剖析ORACLE SQL的优化与调优机制,核心技术和思想方法,包含大量技巧和最佳实践
看起来,书的质量还不错
实用性挺强的,适合初学的人
据说sql优化与调优是最难的,作为储备知识需要学习;
黄玮的,支持一下,有什么心得或疑问的再和黄老师交流交流。
内容很吸引人,讲解挺有条理,需要花费心思专研才行。
这本书很强大,适合有一定基础的人看
显然作者是极为用功的,推导了大量公式并进行比较与分析。
包装完整,书本不错。
SQL优化与调优机制详解
价格比苏宁易购贵