高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》
浏览(22130)|评论(1) 交流分类:数据库|笔记分类: 《12年资深DBA教……
目录:
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下使用AUTOTRACE1.AUTOTRACE简介 AUTOTRACE是SQL*Plus的一项功能,其作用是自动跟踪SQL语句,为SQL 语句生成一个 执行计划并且提供与 该语句的处理有关的统计信息。SQL*Plus AUTOTRACE 可以用来替代 SQL Trace 使用,AUTOTRACE 的好处是不必设置跟踪文件的格式,并且它将自动为 SQL 语句显示执行计划。AUTOTRACE与执行计划的区别是AUTOTRACE 分析和执行语句;而EXPLAIN PLAN仅分析语句,而不负责执行语句。 AUTOTRACE在SQL*PLUS下执行,使用AUTOTRACE不会产生跟踪文件。2.配置AUTOTRACE (1).确保表PLAN_TABLE已经创建,如果没有则如下创建: (2).确保角色plustrace已经创建,如果没有则如下创建: 3.使用AUTOTRACE 4. AUTOTRACE设置命令序号 | 命令 | 解释 |
1 | SET AUTOTRACE OFF | 此为默认值,即关闭Autotrace |
2 | SET AUTOTRACE ON | 产生结果集和解释计划并列出统计 |
3 | SET AUTOTRACE ON EXPLAIN | 显示结果集和解释计划不显示统计 |
4 | SETAUTOTRACE TRACEONLY | 显示解释计划和统计,尽管执行该语句但将看不到结果集 |
5 | SET AUTOTRACE TRACEONLY STATISTICS | 只显示统计 |
序号 | 列名 | 解释 |
1 | recursive call | 递归调用SQL的个数;Oracle在执行这个SQL的时候,有时候会生成很多额外的SQL语句,这个就称为递归调用 |
2 | db block gets | 从buffer cache中读取的block的数量 |
3 | consistent gets | 从buffer cache中读取的undo数据的block的数量 |
4 | physical reads | 从磁盘读取的block的数量 |
5 | redo size | DML生成的redo的大小 |
6 | sorts (memory) | 在内存执行的排序量 |
7 | sorts (disk) | 在磁盘上执行的排序量,如果memory空间使用不足,是会使用disk的空间的 |
8 | bytes sent via SQL*Net to client | 利用sql*net传入到client的字节数; |
9 | bytes received via SQL*Net from client | 利用sql*net传出client的字节数; |
项目 | 优化前 | 优化后 | 倍数 |
从持久层获取consistent gets(从buffer cache中读取的undo数据的block的数量) | 21688 | 6950 | 3 |
物理读physical reads(从磁盘读取的block的数量) | 21589 | 6928 | 3 |
递归调用recursive call | 0 | 1 | N/A |
时间(毫秒) | 2070 | 1078 | 2 |