`
bosschen
  • 浏览: 197172 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

oracle查看执行最慢与查询次数最多的sql语句

 
阅读更多

https://www.cnblogs.com/lcword/p/8243685.html

 

前言

在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻辑上做出优化处理,要么是业务特殊性所导致。如果执行频繁的SQL,往往容易遭遇一些并发性的问题。 那么如何查看ORACLE数据库某个SQL的执行频率/次数呢? 下面来看看完整的示例代码。

一、查询执行最慢的sql

select *
 from (select sa.SQL_TEXT,
        sa.SQL_FULLTEXT,
        sa.EXECUTIONS "执行次数",
        round(sa.ELAPSED_TIME / 1000000, 2) "总执行时间",
        round(sa.ELAPSED_TIME / 1000000 / sa.EXECUTIONS, 2) "平均执行时间",
        sa.COMMAND_TYPE,
        sa.PARSING_USER_ID "用户ID",
        u.username "用户名",
        sa.HASH_VALUE
     from v$sqlarea sa
     left join all_users u
      on sa.PARSING_USER_ID = u.user_id
     where sa.EXECUTIONS > 0
     order by (sa.ELAPSED_TIME / sa.EXECUTIONS) desc)
 where rownum <= 50;

 

二、查询次数最多的 sql

 

select *
 from (select s.SQL_TEXT,
        s.EXECUTIONS "执行次数",
        s.PARSING_USER_ID "用户名",
        rank() over(order by EXECUTIONS desc) EXEC_RANK
     from v$sql s
     left join all_users u
      on u.USER_ID = s.PARSING_USER_ID) t
 where exec_rank <= 100;

 二、查询每天执行慢的SQL

 

SELECT S.SQL_TEXT,
       S.SQL_FULLTEXT,
       S.SQL_ID,
       ROUND(ELAPSED_TIME / 1000000 / (CASE
               WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) = 1) THEN
                1
               ELSE
                EXECUTIONS
             END),
             2) "执行时间'S'",
       S.EXECUTIONS "执行次数",
       S.OPTIMIZER_COST "COST",
       S.SORTS,
       S.MODULE, --连接模式(JDBC THIN CLIENT:程序)
       -- S.LOCKED_TOTAL,
       S.PHYSICAL_READ_BYTES "物理读",
       -- S.PHYSICAL_READ_REQUESTS "物理读请求",
       S.PHYSICAL_WRITE_REQUESTS "物理写",
       -- S.PHYSICAL_WRITE_BYTES "物理写请求",
       S.ROWS_PROCESSED      "返回行数",
       S.DISK_READS          "磁盘读",
       S.DIRECT_WRITES       "直接路径写",
       S.PARSING_SCHEMA_NAME,
       S.LAST_ACTIVE_TIME
  FROM GV$SQLAREA S
 WHERE ROUND(ELAPSED_TIME / 1000000 / (CASE
               WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) = 1) THEN
                1
               ELSE
                EXECUTIONS
             END),
             2) > 5 --100 0000微秒=1S
   AND S.PARSING_SCHEMA_NAME = USER
   AND TO_CHAR(S.LAST_LOAD_TIME, 'YYYY-MM-DD') =
       TO_CHAR( SYSDATE, 'YYYY-MM-DD' )
   AND S.COMMAND_TYPE IN (2 , 3, 5, 6 , 189)
 ORDER BY "执行时间'S'" DESC;

 

 

 

  以及下面这个

SELECT S.SQL_TEXT,
       S.SQL_FULLTEXT,
       S.SQL_ID,
       ROUND(ELAPSED_TIME / 1000000 / (CASE
               WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) = 1) THEN
                1
               ELSE
                EXECUTIONS
             END),
             2) "执行时间'S'",
       S.EXECUTIONS "执行次数",
       S.OPTIMIZER_COST "COST",
       S.SORTS,
       S.MODULE, --连接模式(JDBC THIN CLIENT:程序)
       -- S.LOCKED_TOTAL,
       S.PHYSICAL_READ_BYTES "物理读",
       -- S.PHYSICAL_READ_REQUESTS "物理读请求",
       S.PHYSICAL_WRITE_REQUESTS "物理写",
       -- S.PHYSICAL_WRITE_BYTES "物理写请求",
       S.ROWS_PROCESSED      "返回行数",
       S.DISK_READS          "磁盘读",
       S.DIRECT_WRITES       "直接路径写",
       S.PARSING_SCHEMA_NAME,
       S.LAST_ACTIVE_TIME
  FROM GV$SQLAREA S
 WHERE ROUND(ELAPSED_TIME / 1000000 / (CASE
               WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) = 1) THEN
                1
               ELSE
                EXECUTIONS
             END),
             2) > 5 --100 0000微秒=1S
   AND S.PARSING_SCHEMA_NAME = USER
   AND TO_CHAR(S.LAST_LOAD_TIME, 'YYYY-MM-DD') =
       TO_CHAR( SYSDATE, 'YYYY-MM-DD' )
   AND S.COMMAND_TYPE IN (2 , 3, 5, 6 , 189)
 ORDER BY "执行时间'S'" DESC;

 

分享到:
评论

相关推荐

    Oracle中SQL语句执行效率的查找与解决

    本文将深入探讨Oracle中SQL语句执行效率的查找与解决方法,特别关注于如何识别和优化那些导致性能瓶颈的查询。 ### Oracle SQL执行效率:查找与解决 #### 一、资源消耗分析 在Oracle中,SQL语句执行效率低下通常...

    Oracle数据库中SQL语句的优化与分析.pdf

    以上步骤是Oracle执行SQL语句的一般过程,了解并掌握每个步骤对于分析和优化SQL语句至关重要。 四、影响SQL执行计划选择的因素 执行计划的选择受多种因素影响,如数据的分布、索引的可用性、表的大小、统计信息的...

    Oracle性能监控SQL语句

    ### Oracle性能监控SQL语句详解 #### 一、分析表 **知识点:** - **Table Analysis:** - 使用`ANALYZE TABLE`命令来收集表及其索引的统计信息,这对于优化器做出正确的执行计划决策至关重要。 - `ANALYZE ...

    Oracle 慢SQL监控测试及脚本实现

    通过筛选条件,我们可以获取执行次数大于0且平均执行时间大于0的SQL语句,同时只考虑当天的数据。这有助于我们找出那些频繁运行且效率低下的查询。 在测试阶段,我们模拟了一连串的插入操作,将数据从`EMPLOYEE_TMP...

    SQL语句优化总结34条

    SQL语句优化是数据库性能提升的关键环节,尤其在大数据量的场景下,优化SQL语句可以显著提升查询效率。以下是对标题"SQL语句优化总结34条"中提到的一些重要知识点的详细解释: 1. **选择最有效的表名顺序**:在...

    Oracle SQL语句优化技术分析.pdf

    - 分析和理解执行计划,通过EXPLAIN PLAN查看查询的执行路径,找出性能瓶颈。 - 使用物化视图预计算结果,提高查询速度,尤其适用于复杂的聚合查询。 - 考虑分区表,对于大型表,分区可以显著提高查询性能,特别...

    通过分析SQL语句的执行计划优化SQL总结)

    8. **使用EXPLAIN PLAN或类似的工具**:大多数数据库系统提供工具查看执行计划,如MySQL的EXPLAIN,Oracle的EXPLAIN PLAN,或SQL Server的SET SHOWPLAN_ALL。这些工具帮助我们理解执行过程并定位问题。 9. **参数化...

    sql用来优化你的sql语句

    本文将深入探讨几个关键的SQL优化策略,以提升SQL语句的执行速度和资源利用率。 首先,了解Oracle的优化器类型至关重要。Oracle提供了三种优化器:RULE、COST和CHOOSE。RULE基于预定义的规则进行查询优化,而COST则...

    高性能sql语句讲解

    为了找出执行效率低下的SQL语句,可以使用系统提供的监控工具,例如`V$SQLAREA`视图,来查看每个SQL语句的执行次数、磁盘读取次数以及缓存命中率等指标,从而定位并优化问题语句。 #### 十六、索引重构 对于性能...

    sql语句优化学习分享

    SQL语句优化是提高数据库性能的关键技术之一,尤其是在Oracle数据库系统中。Oracle提供了多种优化策略,以确保SQL查询能够高效地执行。以下是针对标题和描述中提到的SQL优化规则及建议的详细阐述: 1. **优化器的...

    Statement Tracer for Oracle,oracle代码跟踪工具

    "Statement Tracer for Oracle"是一个专门针对Oracle数据库的代码跟踪工具,它帮助开发者和DBA深入分析SQL语句的执行情况,从而提高数据库性能和解决问题。 Statement Tracer for Oracle的主要功能包括: 1. **...

    sql语句的优化方法

    SQL语句优化是数据库性能提升的关键,尤其是在大数据量和高并发的环境中。下面将详细讲解提供的几个关键优化方法: 1. **选择最有效率的表名顺序**:在基于规则的优化器中,ORACLE会从右到左处理FROM子句中的表。...

    oracle sql优化

    数据库管理员可以通过调整 `init.ora` 文件中的参数,如 `shared_pool_size`,来增加共享池的大小,以存储更多的SQL语句和执行计划,从而提高共享的可能性和效率。 2. **选择表的处理顺序**:Oracle解析器按FROM...

    Oracle语句优化规则

    使用EXPLAIN PLAN可以分析SQL语句的执行计划,帮助理解优化器如何处理查询,从而进行调整。 11. **考虑并行查询**: 对于大型数据集,启用并行查询可以利用多个CPU核心,加快处理速度。 12. **物化视图**: ...

    Oracle语句优化53个规则详解.doc

    11. 使用EXPLAIN PLAN:分析查询的执行计划,理解ORACLE如何处理SQL语句,以便进行优化。 12. 适当使用索引合并:当多个单列索引可以用于同一个查询时,ORACLE可能会合并这些索引,但这可能并不总是最优选择。 13....

    基于Oracle数据库海量数据的查询优化研究.pdf

    在 Oracle 数据库的编写工作中,主要面临的难题是 SQL 语句可执行性问题,虽然有多种编写方式然而很难找到最适合的编写方式。因此,必须对数据查询优化做好 SQL 语句优化工作,保证能够实现高效率的 SQL 语句执行。 ...

    oracle_sql性能优化

    当提交的SQL语句与共享池中已有的语句完全一致(包括空格、换行等)时,才能实现共享。共享SQL语句需要满足字符级比较和对象一致性两个条件,否则即使SQL逻辑相同,也无法共享。 4. **缓存和高速缓冲**:Oracle使用...

Global site tag (gtag.js) - Google Analytics