Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 中定位重要(消耗资源多)的SQL

在分析SQL性能的时候,经常需要确定资源消耗多的SQL,总结如下: 1 查看值得怀疑的SQL
select substr(to_char(s.pct,"99.00"),2)||"%"load,       s.executions executes,       p.sql_textfrom(select address,            disk_reads,            executions,            pct,            rank() over(order by disk_reads desc) ranking         from(select address,                     disk_reads,                     executions,                     100*ratio_to_report(disk_reads) over() pct                 from sys.v_$sql                where command_type!=47)        where disk_reads>50*executions) s,       sys.v_$sqltext pwhere s.ranking<=5  and p.address=s.addressorder by 1, s.address, p.piece;2 查看消耗内存多的sqlselect b.username ,a.buffer_gets ,a.executions,       a.disk_reads/decode(a.executions,0,1,a.executions),a.sql_text SQLfrom v$sqlarea a,dba_users bwhere a.parsing_user_id = b.user_id and a.disk_reads >10000order by disk_reads desc;3 查看逻辑读多的SQL
select*from(select buffer_gets, sql_text     from v$sqlarea     where buffer_gets>500000     order by buffer_gets desc)where rownum<=30;4 查看执行次数多的SQLselect sql_text, executionsfrom(select sql_text, executions from v$sqlarea order by executions desc)where rownum<81;5 查看读硬盘多的SQLselect sql_text, disk_readsfrom(select sql_text, disk_reads from v$sqlarea order by disk_reads desc)where rownum<21;6 查看排序多的SQLselect sql_text, sortsfrom(select sql_text, sorts from v$sqlarea order by sorts desc)where rownum<21;7 分析的次数太多,执行的次数太少,要用绑变量的方法来写sqlset pagesize 600;set linesize 120;select substr(sql_text,1,80) "sql",count(*),sum(executions) "totexecs"from v$sqlareawhere executions<5group by substr(sql_text,1,80)having count(*)>30order by 2;8 游标的观察
set pages 300;select sum(a.value), b.namefrom v$sesstat a, v$statname bwhere a.statistic#=b.statistic#and b.name="opened cursors current"group by b.name; select count(0) from v$open_cursor; select user_name, sql_text,count(0)from v$open_cursorgroup by user_name, sql_texthaving count(0)>30;9 查看当前用户&username执行的SQL
select sql_textfrom v$sqltext_with_newlineswhere(hash_value, address) in     (select sql_hash_value, sql_address      from v$session      where username="&username")order by address, piece;ORA-12913: 无法创建字典管理的表空间CentOS 5.5 编译安装MySQL 5.5相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数