什么是top sql

请高手帮忙解释下什么是top sql 最好能举例 谢谢


按照各种资源使用量排序的SQL。

比如按照执行次数排序的,按照逻辑读排序的,按照CUP使用时间排序的。

TOP的意思就是取这些排序后的前几个。

=========================================

其实就是SQL占用资源的降序排列
你可以根据v$sqlarea view 的DISK_READS BUFFER_GETS EXECUTES 进行排序查找。
最简单的办法就是通过SP OR AWR报告得到。

============================

1)top sql 是在statspack或awr中的一个项目;
2)通过top sql 可以查看一些有意义的SQL

不同你也可以通过写SQL语句获得你想要的TOP SQL

---逻辑读最多的SQL
SELECT *
FROM (SELECT   buffer_gets, sql_text
            FROM v$sqlarea
           WHERE buffer_gets > 500000
        ORDER BY buffer_gets DESC)
WHERE ROWNUM <= 30;
   
-- 执行次数多的SQL
SELECT sql_text, executions
FROM (SELECT   sql_text, executions
            FROM v$sqlarea
        ORDER BY executions DESC)
WHERE ROWNUM < 81;
   
-- 读硬盘多的SQL
SELECT sql_text, disk_reads
FROM (SELECT   sql_text, disk_reads
            FROM v$sqlarea
        ORDER BY disk_reads DESC)
WHERE ROWNUM < 21;
   
-- 排序多的SQL
SELECT sql_text, sorts
FROM (SELECT   sql_text, sorts
            FROM v$sqlarea
        ORDER BY sorts DESC)
WHERE ROWNUM < 21;

--分析的次数太多,执行的次数太少,要用绑变量的方法来写sql
SELECT   SUBSTR (sql_text, 1, 80) "sql", COUNT (*),
SUM (executions) "totexecs"
FROM v$sqlarea
WHERE executions < 5
GROUP BY SUBSTR (sql_text, 1, 80)
HAVING COUNT (*) > 30
ORDER BY 2;

---找到比较长的SQL语句
SELECT   a.sql_id, COUNT (a.piece)
FROM v$sqltext a
GROUP BY a.sql_id
HAVING COUNT (a.piece) > 4;

参见:

http://www.itpub.net/forum.php?mod=viewthread&tid=1315971&highlight=

top+sql  百度

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值