PLSQL_低效SQL的识别和查询汇总(案例)

简介: 2014-12-18 Created By BaoXinjian 1. 查找排序最多的SQL SELECT HASH_VALUE, SQL_TEXT, SORTS, EXECUTIONS FROM V$SQLAREA ORDER BY SORTS DESC; 2.

2014-12-18 Created By BaoXinjian

1. 查找排序最多的SQL


  SELECT   HASH_VALUE,
           SQL_TEXT,
           SORTS,
           EXECUTIONS
    FROM   V$SQLAREA
ORDER BY   SORTS DESC;


2.查找磁盘读写最多的SQL


SELECT   *
  FROM   (  SELECT   sql_text,
                     disk_reads "total disk",
                     executions "total exec",
                     disk_reads / executions "disk/exec"
              FROM   v$sql
             WHERE   executions > 0 AND is_obsolete = 'N'
          ORDER BY   4 DESC)
 WHERE   ROWNUM < 11;

 

3.查找工作量最大的SQL(实际上也是按磁盘读写来排序的)


  SELECT   SUBSTR (TO_CHAR (s.pct, '99.00'), 2) || '%' load,
           s.executions executes,
           p.sql_text
    FROM   (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 p
   WHERE   s.ranking <= 5 AND p.address = s.address
ORDER BY   1, s.address, p.piece;

 

4. 用下列SQL工具找出低效SQL


  SELECT   executions,
           disk_reads,
           buffer_gets,
           ROUND ( (buffer_gets - disk_reads) / buffer_gets, 2) Hit_radio,
           ROUND (disk_reads / executions, 2) reads_per_run,
           sql_text
    FROM   v$sqlarea
   WHERE       executions > 0
           AND buffer_gets > 0
           AND (buffer_gets - disk_reads) / buffer_gets < 0.8
ORDER BY   4 DESC;

 

Thanks and Regards

转载:一江水 - http://www.cnblogs.com/rootq/archive/2009/12/24/1631415.html

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
3天前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
22 10
|
11天前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
18天前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
7天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
15 0
|
18天前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色
|
24天前
|
SQL 监控 关系型数据库
使用SQL语句查询操作耗时的技巧与方法
在数据库管理和优化过程中,了解SQL查询操作的耗时是至关重要的
|
24天前
|
SQL
创建分组总计查询的SQL技巧与方法
在SQL中,创建分组总计查询(也称为聚合查询)是一项非常基础且重要的技能
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
98 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。