zoukankan      html  css  js  c++  java
  • 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或者磁盘)而返回的行数非常少;

  • 相关阅读:
    Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性
    15分钟在笔记本上搭建 Kubernetes + Istio开发环境
    idea 插件的使用
    jQuery获取select元素选择器练习
    【Maven】添加ueditor到maven本地仓库
    jQuery序列化乱码解决
    Linux安装RedHat
    MyBatis SQL xml处理小于号与大于号
    js判断数据类型
    基于SSM框架的通用权限框架设计
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3767771.html
Copyright © 2011-2022 走看看