Oracle 使用TRACE进行SQL性能分析(二)

2014-11-24 17:13:30 · 作者: · 浏览: 1
行select会被收集。


Count:这个语句被parse,execute,fetch的次数的统计


Cpu:这个语句所有的parse,execute,fetch所用的cpu总的时间,以秒为单位。如果TIMED_STATISTICS 关闭的话,值为0。


Elapsed:这个语句所有的parse,execute,fetch所消耗的总的时间,以秒为单位。如果TIMED_STATISTICS 关闭的话,值为0。


Disk:这个语句所有的parse,execute,fetch从磁盘上的数据文件中读取的数据块的数量


Query:在一致性读的模式下,这个语句所有的parse,execute,fetch所获取的数据块数量(这部分是从内存读取的也就是逻辑读取的,相当于执行计划里的consistent gets)


Current:在current模式下,这个语句所有的parse,execute,fetch所获取的数据块数量,一般是current模式下发生的delect,insert,update的操作都会获取。数据块


Rows:语句返回的行数,不包括子查询中返回的记录数目。对于select语句,返回在fetch这步,对于insert,delete,update操作,返回记录是在execute这步。


四、对trace文件分析过程:


1,先找磁盘多的sq l(sort= fchdsk ),意味着全表扫描;


2,找运行时间长的(sort= fchela),意味着sql可能写的不好或磁盘,逻辑读较多;


3,找出一致性读较多的(sort= fchqry),当表不是很大的时候(可能全部缓存住了),没有发生磁盘读,但不意味着不需要建立索引,或者sql需要优化;


4,找出当前模式从缓冲区获得数据的数量(sort=exedsk,exeela,exeqry),这些主要集中在dml语句里的操作,看是否有必要优化sql或建立索引之所以排序是为了在sql很多的时候快速定位sql,如果sql比较少的话就没必要排序了,但我们要有分析问题的思路。


--------------------------------------分割线 --------------------------------------


--------------------------------------分割线 --------------------------------------