根据不同的指标获取TOP 10 SQL

本文提供了一个复杂的SQL查询示例,用于分析数据库中SQL语句的性能。通过多种排名方法筛选出执行时间、物理读取及CPU使用率排名前十的SQL语句,并详细展示了如何计算这些指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select sql.*,
       (select SQL_TEXT
          from dba_hist_sqltext t
         where t.sql_id = sql.sql_id
           and rownum = 1) SQLTEXT
  from (select a.*,
               RANK() over(order by els desc) as r_els,
               RANK() over(order by phy desc) as r_phy,
               RANK() over(order by get desc) as r_get,
               RANK() over(order by exe desc) as r_exe,
               RANK() over(order by CPU desc) as r_cpu
          from (
                select sql_id,
                        sum(executions_delta) exe,
                        round(sum(elapsed_time_delta) / 1e6, 2) els,
                        round(sum(cpu_time_delta) / 1e6, 2) cpu,
                        round(sum(iowait_delta) / 1e6, 2) iow,
                        sum(buffer_gets_delta) get,
                        sum(disk_reads_delta) phy,
                        sum(rows_processed_delta) RWO,
                        round(sum(elapsed_time_delta) /
                              greatest(sum(executions_delta), 1) / 1e6,
                              4) elsp,
                        round(sum(cpu_time_delta) /
                              greatest(sum(executions_delta), 1) / 1e6,
                              4) cpup,
                        round(sum(iowait_delta) /
                              greatest(sum(executions_delta), 1) / 1e6,
                              4) iowp,
                        round(sum(buffer_gets_delta) /
                              greatest(sum(executions_delta), 1),
                              2) getp,
                        round(sum(disk_reads_delta) /
                              greatest(sum(executions_delta), 1),
                              2) phyp,
                        round(sum(rows_processed_delta) /
                              greatest(sum(executions_delta), 1),
                              2) ROWP
                  from dba_hist_sqlstat s
                --where snap_id between ... and ...
                 group by sql_id) a
        ) SQL
 where r_els <= 10
    or r_phy <= 10
    or r_cpu <= 10
 order by els desc

转载于:https://www.cnblogs.com/ss-33/p/9076984.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值