《sql优化经验总结》PPT课件.ppt
《《sql优化经验总结》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《sql优化经验总结》PPT课件.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ORACLE SQL优化经验交流优化经验交流 系统支撑部系统支撑部 董建忠董建忠1www.si-第一章第一章:概述概述什么样的什么样的SQL需要优化需要优化常见的问题常见的问题发现问题的方法发现问题的方法2www.si-什么样的什么样的SQL需要优化需要优化引发严重的等待事件引发严重的等待事件消耗大量的系统资源(消耗大量的系统资源(CPU/IO/MEM)运行时间超长运行时间超长不能满足压力测试指标不能满足压力测试指标3www.si-常见的问题常见的问题没有恰当的索引(全表扫描)没有恰当的索引(全表扫描)没有使用到恰当的索引没有使用到恰当的索引重编译问题重编译问题多表关联条件不当或关联太多多表关
2、联条件不当或关联太多分区表没有分析,未能使用索引分区表没有分析,未能使用索引死锁死锁4www.si-发现问题的方法发现问题的方法从从v$session_wait查看等待事件查看等待事件SQLPLUS使用使用AUTOTRACE查看执行计划查看执行计划在在TOAD中直接查看执行计划中直接查看执行计划从从STATSPACK查看资源查看资源(CPU、I/O)消耗状况消耗状况生成生成SESSION TRACE文件(一般为文件(一般为DBA使用)使用)用命令用命令tkprof对对TRACE文件进行分析文件进行分析 5www.si-第二章:第二章:从等待事件中发现问题从等待事件中发现问题查看查看SESSIO
3、N WAIT的语句的语句典型事件:典型事件:Db File Sequential Read典型事件:典型事件:Db File Sequential Read典型事件:典型事件:Latch Free(latch 释放)释放)6www.si-查看查看SESSION WAIT 的语句的语句set pagesize 2000set linesize 110col event format a25col program format a20select a.event,substr(b.program,1,20)program,b.sid,a.p1,a.p2,a.p3 from gv$session_w
4、ait a,v$session b where a.sid=b.sid and a.event not like%SQL%and a.event not like%message%and a.event not like%time%7www.si-典型事件:Db File Scattered Read 数据文件分散读取数据文件分散读取 这种情况通常显示与全表扫描相关的等待。这种情况通常显示与全表扫描相关的等待。一般表明该表找不到索引,或者只能找到有限一般表明该表找不到索引,或者只能找到有限的索引。的索引。特定条件下执行全表扫描可能比索引扫描更有特定条件下执行全表扫描可能比索引扫描更有效,但如果
5、出现这种等待时,最好检查一下这效,但如果出现这种等待时,最好检查一下这些全表扫描是否必要。些全表扫描是否必要。建议将小而常用的表建议将小而常用的表CACHE到内存中,以避到内存中,以避免一次又一次地重复读取它们免一次又一次地重复读取它们 8www.si-典型事件:Db File Sequential Read数据文件顺序读取数据文件顺序读取这一事件通常显示单个块的读取这一事件通常显示单个块的读取(如索引读取如索引读取)表示表的连接顺序不佳,或者使用了不恰当的表示表的连接顺序不佳,或者使用了不恰当的索引索引检查每个扫描是否必要的,并检查多表连接的检查每个扫描是否必要的,并检查多表连接的连接顺序连
6、接顺序一般会消耗大量一般会消耗大量PGA内存,从而在顺序读取时内存,从而在顺序读取时导致大量等待。导致大量等待。9www.si-典型事件:Latch Free(latch 释放)释放)latch 是一种低级排队机制,用于保护系统全局区域是一种低级排队机制,用于保护系统全局区域(SGA)中共享内存结构。)中共享内存结构。latch 就像是一种快速地被就像是一种快速地被获取和释放的内存锁。获取和释放的内存锁。latch 用于防止共享内存结构被用于防止共享内存结构被多个用户同时访问。如果多个用户同时访问。如果latch 不可用,就会记录不可用,就会记录latch 释放失败。释放失败。大多数大多数la
7、tch 问题都与以下操作相关:不能使用绑定变问题都与以下操作相关:不能使用绑定变量(库缓存量(库缓存latch)、重复生成问题(重复分配)、重复生成问题(重复分配latch)、)、缓冲存储器竞争问题(缓冲器存储缓冲存储器竞争问题(缓冲器存储LRU 链),以及缓链),以及缓冲存储器中的冲存储器中的“热热”块(缓冲存储器链)。也有一些块(缓冲存储器链)。也有一些latch 等待与等待与bug(程序错误)有关(程序错误)有关当当latch不命中率大于不命中率大于0.5%时,就应当研究这一问题时,就应当研究这一问题 10www.si-第三章:第三章:SQL语句的执行计划语句的执行计划SQL语句的执行步
8、骤语句的执行步骤ORACLE的优化器的优化器在在SQLPLUS 配置配置AUTOTRACE使用使用QUEST TOAD 查看执行计划查看执行计划安装安装AUTOTRACE环境环境使用使用QUEST TOAD 查看执行计划查看执行计划查看执行计划查看执行计划11www.si-SQL 语句的执行步骤语句的执行步骤语法分析语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的,分析语句的语法是否符合规范,衡量语句中各表达式的意义。意义。语义分析语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。相应的权限。视图转换,将涉及视图的
9、查询语句转换为相应的对基表查询语句。视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。表达式转换,表达式转换,将复杂的将复杂的 SQL 表达式转换为较简单的等效连接表达式。表达式转换为较简单的等效连接表达式。选择优化器,不同的优化器一般产生不同的选择优化器,不同的优化器一般产生不同的“执行计划执行计划”选择连接方式,选择连接方式,ORACLE 有三种连接方式,对多表连接有三种连接方式,对多表连接 ORACLE 可选择适当的连接方式。可选择适当的连接方式。选择连接顺序,选择连接顺序,对多表连接对多表连接 ORACLE 选择哪一对表先连接,选择选择哪一对表先连接,选择这两表中哪个表做为源数
10、据表。这两表中哪个表做为源数据表。选择数据的搜索路径,选择数据的搜索路径,根据以上条件选择合适的数据搜索路径,如根据以上条件选择合适的数据搜索路径,如是选用全表搜索还是利用索引或是其他的方式。是选用全表搜索还是利用索引或是其他的方式。运行运行“执行计划执行计划”12www.si-ORACLE 的优化器的优化器 ORACLE 有两种优化器:基于规则的优化器(有两种优化器:基于规则的优化器(RBO,Rule Based Optimizer),和基于代价的优化器(),和基于代价的优化器(CBO,Cost Based Optimizer)ORACLE V7以来缺省的设置应是以来缺省的设置应是“choo
11、se”,即如果,即如果对已分析的表查询的话选择对已分析的表查询的话选择CBO,否则选择,否则选择RBO。如。如果该参数设为果该参数设为“rule”,则不论表是否分析过,一概,则不论表是否分析过,一概选用选用RBO,除非在语句中用,除非在语句中用hint强制强制 各各“执行计划执行计划”的的 cost 的计算根据,依赖于数据表中的计算根据,依赖于数据表中数据的统计分布数据的统计分布,须要分析表和相关的索引,才能搜,须要分析表和相关的索引,才能搜集到集到 CBO 所需的数据所需的数据 13www.si-在在SQLPLUS 配置配置AUTOTRACEAUTOTRACE 参数参数解解 释释SET AU
12、TOTRACE OFF不能获得AUTOTRACE报告.这是默认的.SET AUTOTRACE ON EXPLAIN仅仅显示优化器执行计划的AUTOTRACE报告SET AUTOTRACE ON STATISTICS仅仅显示SQL语句执行的统计结果的AUTOTRACE报告SET AUTOTRACE ON包括上面两项内容的AUTOTRACE报告SET AUTOTRACE TRACEONLY与SET AUTOTRACE ON类似,所有的统计和数据都在,但不可以打印14www.si-安装安装AUTOTRACE环境环境用户必须被赋予用户必须被赋予PLUSTRACE角色,而角色,而PLUSTRACE角色需
13、要角色需要DBA来赋予。另外,该用户必须创建来赋予。另外,该用户必须创建PLAN_TABLE表表 1、首先创建首先创建PLUSTRACE角色并且赋给角色并且赋给DBA:CONNECT sys/syss password AS SYSDBA$ORACLE_HOME/sqlplus/admin/plustrce.sql2、赋权限给用户赋权限给用户 CONNECT/AS SYSDBA GRANT PLUSTRACE TO USER(预赋权的用户名)(预赋权的用户名);这样,就可以在该用户下设置这样,就可以在该用户下设置AUTOTRACE报告的显示与否了。报告的显示与否了。15www.si-使用使用Q
14、UEST TOAD 查看执行计划查看执行计划安装安装QUEST TOAD软件软件建立数据库连接建立数据库连接进入进入SQL语句执行窗口语句执行窗口输入并选定输入并选定SQL语句语句在在SQL-WINDOW菜单中选菜单中选EXPLAIN PLAN CURRENT SQL,即可看到执行计划,即可看到执行计划,并不真正执行语句,不需要等待结果并不真正执行语句,不需要等待结果16www.si-查看执行计划查看执行计划Execution Plan-0 SELECT STATEMENT Optimizer=CHOOSE1 0 TABLE ACCESS(FULL)OF TESTStatistics-0 re
15、cursive calls0 db block gets4 consistent gets0 physical reads0 redo size547 bytes sent via SQL*Net to client655 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client0 sorts(memory)0 sorts(disk)4 rows processed17www.si-第四章:如何分析问题的原因第四章:如何分析问题的原因查找原因的一般步骤查找原因的一般步骤18www.si-查找原因的步骤(一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql优化经验总结 sql 优化 经验总结 PPT 课件
限制150内