SQL性能优化工具TKPROF



全名为Trace Kernel Profile,用来格式化跟踪文件,是一个命令行工具。
主要的格式例如以下:
tkprof tracefile outputfile …
tracefile:要分析的trace文件
outputfile:格式化后的文件
可选參数及说明例如以下:
EXPLAIN 为每一个SQL语句产生运行计划,指定用户方案和password,使用当中的PLAN_TABLE表
TABLE 当EXPLAIN选项生效时可用,指定替代PLAN_TABLE的表
SYS 启用该选项时不包括递归调用,=NO时,sys用户执行的SQL语句(比如,解析操作阶段对数据字典的递归查询)不输出到输出文件里
SORT 指定SQL语句的排序方式
RECORD 指定文件名称,将SQL语句写入,排除递归的SQL
PRINT 限定仅仅输出指定数量的分析SQL语句,默认是无限制的,仅仅有在和參数sort一起使用的时候才有意义
INSERT 指定一个文件名称,容纳相关的插入SQL语句,将分析的SQL及统计插入TKPROF_TABLE
AGGREGATE是否将同样sql语句的运行信息合计起来,默觉得yes
WAITS 指定是否统计跟踪文件里的等待事件
SORT选项可分三类,解析选项,运行选项和取数据选项(PRS,EXE,FCH),根椐这三种操作占用相关资源来排序。
TKPROF针对SQL的统计也分为三类:解析(prsela),运行(exeela),取数(fchela)
 
Count:Parse,Execute,Fetch发生的次数
CPU:表示处理数据调用花去的CPU时间,以秒为单位
Elapsed:是处理数据库调用花费的总的时间,以秒为单位
Disk:表示物理读取的数据块数量
Query:是在一致性模式(consistent mode)下从快速缓存逻辑读取的块数量
Current:代表在当前模式下从快速缓存逻辑读取的块数量
Rows:代表处理的数据行数量。对于查询来说,这就是获取的行数量。对于INSERT、DELETE、MERGE以及UPDATE 等语句来说,这是所影响的行数量

解析的信息開始两行Misses in library cache during parse和Misses in library cache during execute提供了发生在解析和运行调用阶段的硬解析数量。
假设在运行调用时没有硬解析发生,Misses in library cache during execute这一行将不存在。

运行计划分为两部分:
第一部分称为行源操作(Row Source Operation ),是游标关闭且开启跟踪情况下写到跟踪文件里的运行计划。这意味着假设应用程序不关闭游标而重用它们的话,不会有新的针对重用游标的运行计划写入到跟踪文件里。
第二部分,叫做运行计划 (Execution Plan),是由指定了explain參数的TKPROF生成的。既然这是随后生成的,所以和第一部分不一定全然匹配。万一你看到不一致,前者是正确的。
两个运行计划都通过Rows列提供运行计划中每一个操作返回的行数,不是处理的。
对于每一个行源操作来说,可能还会提供例如以下的执行时统计:
cr:是一致性模式下逻辑读出的数据块数
pr:是从磁盘物理读出的数据块数
pw:是物理写入磁盘的数据块数
time是以微秒表示的总的消逝时间。要注意依据统计得到的值不总是精确的。实际上,为了降低开销,可能用了採样
输出文件的结尾给出了全部关于跟踪文件的信息。首先能够看到跟踪文件名、版本、用于这个分析所使用的參数sort的值。然后,给出了全部会话数量与SQL语句数量。

从TKPROF的统计结果观察,发现下列特征的SQL可能须要调优:
1. 消耗过度的CPU资源;
2. 花费太长的时间在Parse,Execute,Fetch阶断;
3. 从磁盘读数据块太多而从SGA中读块非常少;
4. 存取太多的数据块(从SGA或者磁盘)而返回的行数非常少;

原文地址:https://www.cnblogs.com/mengfanrong/p/3767771.html