优化SQL的另一种思维7 tkprof程序整体实例解说
优化SQL的另一种思维系列文章是作者用了快一年的时间完成的SQL优化文章,它的原理实际上是通过分析SQL语句的执行计划来实现对整体SQL进行优化的,这是多年项目经验的总结,由于考虑到目前国内的Oracle部署还基本维持在Oracle 8 和Oracle 9的水平上,所以里面的模拟环境都是在Oracle 8.3下进行的,希望可以针对性更强一些。本文是系列连载的第七章中tkprof程序整体实例解说篇。
exerow number of rows processed during execute
exemis number of library cache misses during execute
fchcnt number of times fetch was called
fchcpu cpu time spent fetching
fchela elapsed time fetching
fchdsk number of disk reads during fetch
fchqry number of buffers for consistent read during fetch
fchcu number of buffers for current read during fetch
fchrow number of rows fetched
userid userid of user that parsed the cursor
只列出指定数量的已排序的sql语句,排序的条件参见SORT参数。如果忽略此参数,tkprof将跟踪文件中的所有的sql语句及其相关的分析数据存放到输出文件中。
Print与sort参数组合在一起,可以实现:
找出某一阶段耗费cpu最多的前n个sql
找出某一阶段读硬盘最多的前n个sql等等。
INSERT
创建一个sql脚本文件,里面包含create table 与insert语句。利用这个脚本文件创建一个表及插入数据后,可以得到跟踪文件中所有sql语句(包含recursive SQL)的统计信息。如
| ,depth,user_id, parse_cnt,parse_cpu,parse_elap,parse_disk, parse_query,parse_current,parse_miss ,exe_count,exe_cpu,exe_elap,exe_disk,exe_query, exe_current,exe_miss,exe_rows ,fetch_count,fetch_cpu,fetch_elap,fetch_disk, fetch_query,fetch_current,fetch_rows,ticks ,sql_statement |
利用这些信息,也可以发现有问题的sql。即是格式化好的输出文件中有关sql性能信息数据的数据库表的形式。
- 本文关键词:

