oracle执行计划详解

上传人:ali****an 文档编号:118794937 上传时间:2019-12-25 格式:PDF 页数:54 大小:750.49KB
返回 下载 相关 举报
oracle执行计划详解_第1页
第1页 / 共54页
oracle执行计划详解_第2页
第2页 / 共54页
oracle执行计划详解_第3页
第3页 / 共54页
oracle执行计划详解_第4页
第4页 / 共54页
oracle执行计划详解_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《oracle执行计划详解》由会员分享,可在线阅读,更多相关《oracle执行计划详解(54页珍藏版)》请在金锄头文库上搜索。

1、1 Explain Plan 命令说明命令说明 Nancy Guo 郭颖忠 Senior Sales Consultant 免责声明免责声明 本讲座旨在为您提供有关如何阅读本讲座旨在为您提供有关如何阅读 SQL 执行计划的说执行计划的说 本讲座旨在为您提供有关如何阅读本讲座旨在为您提供有关如何阅读 SQL 执行计划的说执行计划的说 明,并帮助您确定该计划是否满足您的要求。明,并帮助您确定该计划是否满足您的要求。 本讲座并不能使您一举成为优化器专家,也无法使您本讲座并不能使您一举成为优化器专家,也无法使您 具备轻松调整具备轻松调整 SQL 语句的能力语句的能力!具备轻松调整具备轻松调整 SQL

2、语句的能力语句的能力! 议题议题 什么是执行计划什么是执行计划如何生成执行计划如何生成执行计划? 什么是执行计划什么是执行计划,如何生成执行计划如何生成执行计划? 一个优秀的优化器计划是什么样的?一个优秀的优化器计划是什么样的? 理解执行计划理解执行计划 理解执行计划理解执行计划 基数基数 访问方法访问方法访问方法访问方法 联接顺序联接顺序 联接类型联接类型 分区修剪分区修剪 并行度并行度 执行计划示例执行计划示例 执行计划示例执行计划示例 什么是执行计划什么是执行计划,如何生如何生什么是执行计划什么是执行计划,如何生如何生 成执行计划?成执行计划? 什么是执行计划?什么是执行计划? 执行计划

3、显示在执行条执行计划显示在执行条 SQL 语句时必须执行的详细语句时必须执行的详细 执行计划显示在执行执行计划显示在执行一一条条 SQL 语句时必须执行的详细语句时必须执行的详细 步骤步骤 这些步骤表示为组数据库运算符这些步骤表示为组数据库运算符这些运算符将使这些运算符将使 这些步骤表示为这些步骤表示为一一组数据库运算符组数据库运算符,这些运算符将使这些运算符将使 用和生成行用和生成行 这些运算符及其实施的顺序由优化器使用查询转换及这些运算符及其实施的顺序由优化器使用查询转换及 这些运算符及其实施的顺序由优化器使用查询转换及这些运算符及其实施的顺序由优化器使用查询转换及 物理优化技术的组合来确

4、定物理优化技术的组合来确定 执行计划通常以表格的形式显示执行计划通常以表格的形式显示,但它实际上为树形但它实际上为树形执行计划通常以表格的形式显示执行计划通常以表格的形式显示,但它实际上为树形但它实际上为树形 什么是执行计划?什么是执行计划? 查询查询 SELECT prod category avg(amount sold)SELECT prod_category, avg(amount_sold) FROM sales s, products p WHERE p.prod_id = s.prod_id GROUP BY prod_category; GB 执行计划的表格表示 - Id Op

5、erationName 执行计划的树形表示 Group By HASH JOIN Id OperationName - 0 SELECT STATEMENT 1 HASH GROUP BY 2HASH JOIN TABLE ACCESS TABLE ACCESS 2 HASH JOIN 3 TABLE ACCESS FULLPRODUCTS 4 PARTITION RANGE ALL 5 TABLE ACCESS FULLSALES - SALESPRODUCTS - 如何获取执行计划如何获取执行计划 可以使用两种方法查看执行计划可以使用两种方法查看执行计划可以使用两种方法查看执行计划可以使用

6、两种方法查看执行计划 1 EXPLAIN PLAN 命令命令1.EXPLAIN PLAN 命令命令 显示一条显示一条 SQL 语句的执行计划,而不实际执行此语句语句的执行计划,而不实际执行此语句 2 V$SQL PLAN2.V$SQL_PLAN 在在 Oracle 9i 中引入的字典视图,它可显示已编译到游标缓存中一 个游标的一条 中引入的字典视图,它可显示已编译到游标缓存中一 个游标的一条 SQL 语句的执行计划语句的执行计划 使用使用 DBMS_XPLAN 包来显示执行计划包来显示执行计划 在某些情况下,使用 EXPLAIN PLAN 显示的计划可能与使用 V$SQL PLAN 显示的计划

7、不同V$SQL_PLAN 显示的计划不同 如何获取执行计划如何获取执行计划 示例示例 1 EXPLAIN PLAN 命令和命令和 dbms_xplan.display 函数函数 SQL EXPLAIN PLAN FOR SELECT prod_category, avg(amount_sold) FROM sales s, products p WHERE p.prod_id = s.prod_idp p_p_ GROUP BY prod_category; Explained SQLSELECT plan table outputSQL SELECT plan_table_output FR

8、OM table(dbms_xplan.display(plan_table,null,basic); - Id OtiNId OperationName - 0 SELECT STATEMENT 1 HASH GROUP BY 2 HASH JOIN 3 TABLE ACCESS FULLPRODUCTS 4 PARTITION RANGE ALL 5 TABLE ACCESS FULLSALES - 如何获取执行计划如何获取执行计划 示例示例 2 生成并显示在会话中最后执行的生成并显示在会话中最后执行的 SQL 语句的执行计划语句的执行计划 SQLSELECT prod_category,

9、 avg(amount_sold) FROMldtFROM sales s, products p WHERE p.prod_id = s.prod_id GROUP BY prod_category; no rows selectedno rows selected SQL SELECT plan_table_output FROM table(dbms_xplan.display_cursor(null,null,basic); - Id OperationName - 0 SELECT STATEMENT0 SELECT STATEMENT 1 HASH GROUP BY 2 HASH

10、JOIN 3 TABLE ACCESS FULLPRODUCTS 4PARTITION RANGE ALL4 PARTITION RANGE ALL 5 TABLE ACCESS FULLSALES - 如何获取执行计划如何获取执行计划 示例示例 3 显示显示 V$SQL PLAN 中的任何其他语句的执行计划中的任何其他语句的执行计划示例示例 3 显示显示 V$SQL_PLAN 中的任何其他语句的执行计划中的任何其他语句的执行计划 1 直接直接:1.直接直接: SQL SELECT plan_table_output FROM table(dbms_xplan.display_cursor(f

11、nrtqw9c233tt,null,basic); 2.间接:间接: SQL SELECT plan_table_output FROM$lTABLE(dbldil(l idhildbFROM v$sql s, TABLE(dbms_xplan.display_cursor(s.sql_id,s.child_number, basic) t WHERE s.sql_text like select PROD_CATEGORY%; 注:注:有关详情,请访问有关详情,请访问 DBMS_XPLAN 参数参数 DBMS XPLAN DISPLAY 接受接受 3 个参数个参数 DBMS_XPLAN.DI

12、SPLAY 接受接受 3 个参数个参数 计划表的名称(默认为计划表的名称(默认为“PLAN_TABLE”),), statement_id(默认为(默认为 null) 格式(默认为格式(默认为“TYPICAL”) DBMS_XPLAN.DISPLAY_CURSOR 接受接受 3 个参数个参数 SQL ID(默认为此会话中最后个执行的语句默认为此会话中最后个执行的语句) SQL_ID(默认为此会话中最后默认为此会话中最后一一个执行的语句个执行的语句), 子编号(默认为子编号(默认为 0),), 格式(默认为格式(默认为“TYPICAL”) 格式是高度可定制的格式是高度可定制的 Basic Typ

13、ical Typical All 其他低级别参数可显示更多的详细信息其他低级别参数可显示更多的详细信息 一一个优秀的优化器计划个优秀的优化器计划个优秀的优化器计划个优秀的优化器计划 是什么样的?是什么样的? 一个优秀的优化器计划是什么样的?一个优秀的优化器计划是什么样的? 优化器有两个不同的目标优化器有两个不同的目标优化器有两个不同的目标优化器有两个不同的目标 串行执行:其关注的是开销串行执行:其关注的是开销 开销越低越好开销越低越好 开销越低越好开销越低越好 并行执行:其关注的是性能并行执行:其关注的是性能 速度越快越好速度越快越好 速度越快越好速度越快越好 两个基本问题:两个基本问题: 什

14、么是开销?什么是开销? 什么是性能什么是性能?什么是性能什么是性能 什么是开销?什么是开销? 优化器生成的神奇数字?优化器生成的神奇数字? 执行执行句所需的资句所需的资 执行执行 SQL 语语句所需的资句所需的资源?源? 复杂计算的结果?复杂计算的结果? 执行语句所需时间的估计?执行语句所需时间的估计? 实际定义实际定义实际定义实际定义 开销指的是所使用的工作单元或资源的数量 优化器用 CPU内存使用和 IO 作为工作单元 优化器用 CPU、内存使用和 IO 作为工作单元 开销是对执行操作时要使用的 CPU 和内存量以及磁盘 I/O 数的估计 开销是开销是 Oracle 的一个内部量度的一个内部量度 性能是什么?性能是什么? 完成尽可能多的查询完成尽可能多的查询? 完成尽可能多的查询完成尽可能多的查询? 使用最少的资源获得尽可能快的运行速度?使用最少的资源获得尽可能快的运行速度? 获得最佳的并发率获得最佳的并发率? 获得最佳的并发率获得最佳的并发率?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号