高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》
目录:
Oracle数据完整性和锁机制 索引及优化之表分析 表分析、约束及表间关系 Oracle体系结构1Oracle体系结构2 海量数据库及分区1 海量数据库及分区2 海量数据库及分区3 海量数据库及分区4 高级SQL优化(一) 高级SQL优化(二) 高级SQL优化(三) 常用优化工具 PPT和源码下载: http://sishuok.com/forum/posts/list/6365.html配套视频课程 Oracle性能优化 http://sishuok.com/product/601 海量数据库和高级SQL优化 http://sishuok.com/product/602 SQL*PLUS下使用AUTOTRACE 序号命令解释1SET AUTOTRACE OFF此为默认值,即关闭Autotrace2SET AUTOTRACE ON产生结果集和解释计划并列出统计3SET AUTOTRACE ON EXPLAIN显示结果集和解释计划不显示统计4SETAUTOTRACE TRACEONLY显示解释计划和统计,尽管执行该语句但将看不到结果集5SET AUTOTRACE TRACEONLY STATISTICS只显示统计序号列名解释1recursive call递归调用SQL的个数;Oracle在执行这个SQL的时候,有时候会生成很多额外的SQL语句,这个就称为递归调用2db block gets从buffer cache中读取的block的数量3consistent gets从buffer cache中读取的undo数据的block的数量4physical reads从磁盘读取的block的数量5redo sizeDML生成的redo的大小6sorts (memory)在内存执行的排序量7sorts (disk)在磁盘上执行的排序量,如果memory空间使用不足,是会使用disk的空间的8bytes sent via SQL*Net to client利用sql*net传入到client的字节数;9bytes received via SQL*Net from client利用sql*net传出client的字节数;
项目优化前优化后倍数从持久层获取consistent gets(从buffer cache中读取的undo数据的block的数量)2168869503物理读physical reads(从磁盘读取的block的数量)2158969283递归调用recursive call01N/A时间(毫秒)207010782 
结论:1.实时SQL监视通过OEM查看其监视报告时,具有更好的图形化的展示效果,因此更加直观2.如果监视的SQL语句发现具有全表扫描等执行计划的特征,或者CPU时间和I/O时间比较长,则可以与SQL调优顾问接合起来,不但能获知性能瓶颈,而且能获得Oracle推荐的优化策略。3.实践中,程序员往往不加思考的按照自己的理解和经验编写SQL,此举在90%的项目中存在,从而造成项目产品投用后很快就产生各种性能瓶颈,正确的做法应该是 在准备好足够的测试数据,并且监视每一条SQL并在开发的初始阶段即 优化之。 习题1.在对索引的限制中,关于NOT和不等于的限制在11g数据库CBO模式下还存在吗,为什么?在RBO模式下呢?2.如果某个索引中的列具有可空属性,则Oracle执行类似 is null时不会使用索引,其原因是什么?3.Oralce具有那三种访问路径,其中最快的两种是什么?4.什么情况下应该使用复合索引,此时使用复合索引比使用多个单个索引具有哪些优势?5.分别配置并使用SQL优化常用的三种工具:Autotrace、调优顾问和实时监视顾问,复习本课的举例来加深理解。转载请注明私塾在线【 http://sishuok.com/forum/blogPost/list/6415.html】