zoukankan      html  css  js  c++  java
  • 等待事件

    等待事件概览
        * v$event_name:这个视图记录着当前数据库支持的等待事件及其基本信息
        * Oracle 的等待事件主要可以分为两类,即空闲(idle)等待事件和非空闲(non-idle)等待事件。
          空闲事件指 Oracle 正等待某种工作,在诊断和优化数据库的时候,我们不用过多注意这部分事件。
          非空闲等待事件专门针对 Oracle 的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是我们在调整数据库的时候应该关注与研究的。    
        
    等待事件分类
        * Oracle 11g R2中主要分类及各类等待事件的个数    
        SELECT wait_class#, wait_class_id, wait_class, COUNT (*) AS "count"
        FROM v$event_name 
        GROUP BY wait_class#, wait_class_id, wait_class
        ORDER BY wait_class#;    
            
        WAIT_CLASS# WAIT_CLASS_ID WAIT_CLASS                                count
        ----------- ------------- ---------------------------------------------------------------- ----------
              0    1893977003 Other                                   958
              1    4217450380 Application                                   17
              2    3290255840 Configuration                                24
              3    4166625743 Administrative                               55
              4    3875070507 Concurrency                                   33
              5    3386400367 Commit                                    2
              6    2723168908 Idle                                       96
              7    2000153315 Network                                   35
              8    1740759767 User I/O                                   48
              9    4108307767 System I/O                                   32
             10    2396326234 Scheduler                                    8
             11    3871361733 Cluster                                   50
             12        644977587 Queueing                                    9
    
        13 rows selected.
        SQL>     
    
        
    从等待发现历史瓶颈    
        * 通过查询 V$SYSTEM_WAIT_CLASS 视图获得各类主要等待事件的等待时间和等待次数等信息,通过分类以及统计信息,可以很直观地快速获得数据库的整体印象。
        SQL>  set  numwidth 30
        SQL>  select * from v$system_wait_class order by time_waited;
        WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS                                                       TOTAL_WAITS TIME_WAITED TOTAL_WAITS_FG TIME_WAITED_FG
        ------------- ----------- ---------------------------------------------------------------- ----------- ----------- -------------- --------------
           2396326234          10 Scheduler                                                               4882        3504           4654           3246
           3386400367           5 Commit                                                               5175978      573796        5165499         572165
           2000153315           7 Network                                                            777336459      749926      769131912         748125
           4217450380           1 Application                                                          4434302     7381881        4397678        7364695
           1893977003           0 Other                                                              100729436    17616970        8174372       16305755
           1740759767           8 User I/O                                                          6181252645    25640434     6153846672       24928475
           3875070507           4 Concurrency                                                         31874404    27587290       31626616       22056683
           4166625743           3 Administrative                                                      93480936    55969848           4832         184803
           4108307767           9 System I/O                                                         557921472    74836663       77811450         339619
           3290255840           2 Configuration                                                        2617482   105558521        2595392       99440746
           2723168908           6 Idle                                                              1034274573  1.1087E+11      746393167     3.2167E+10
           
    
        * 相关视图:
          V$SESSION(V$SESSION_WAIT):会话当前正在发生的事件
          V$SESSION_EVENT :活动会话在其生命周期经历的事件(对V$SESSION的累积)
          V$SYSTEM_EVENT :作为数据库整体等待事件保存(对V$SESSION_EVENT的累积)
          注意,V$SESSION_EVENT 或者 V$SYSTEM_EVENT 视图的累积信息以及关于等待的平均计算,使我们无法得知个别等待消耗的时间长短。为了解决这一问题,Oracle 10g 引入了一个新的视图 v$event_histogram,通过这个视图可
    以看到等待事件的柱状图分布,从而可以对一个等待事件的具体分布有进一步的了解。在以下查询输出中可以看到,cursor: pin S wait on X 的竞争主要是 16至512 毫秒的竞争。但是注意等
    待时间在 4096 毫秒左右的等待也有 2 次。
    
        SQL> set  numwidth 30
        SQL> SELECT event, wait_time_milli, wait_count
          2  FROM v$event_histogram WHERE event = 'cursor: pin S wait on X';    
        EVENT                                                                           WAIT_TIME_MILLI                     WAIT_COUNT
        ---------------------------------------------------------------- ------------------------------ ------------------------------
        cursor: pin S wait on X                                                                       1                          23116
        cursor: pin S wait on X                                                                       2                          14786
        cursor: pin S wait on X                                                                       4                          28929
        cursor: pin S wait on X                                                                       8                          55937
        cursor: pin S wait on X                                                                      16                    59049323576
        cursor: pin S wait on X                                                                      32                      440755320
        cursor: pin S wait on X                                                                      64                        8417963
        cursor: pin S wait on X                                                                     128                        4674251
        cursor: pin S wait on X                                                                     256                          13744
        cursor: pin S wait on X                                                                     512                            379
        cursor: pin S wait on X                                                                    1024                             27
        cursor: pin S wait on X                                                                    2048                              0
        cursor: pin S wait on X                                                                    4096                              2
    
        13 rows selected.
    
        SQL>        
    
    从等待确定当前瓶颈
        * ASH
        * 确定当前主要影响性能的等待事件
        col event format a30
        col p1text format a20
        select sid,event,p1,p1text from v$session where event not like '%client%';
        
        * 捕获相关sql
        spool /home/oracle/sqltext.txt
        select sql_text from v$sqltext a
        where a.hash_value = (select sql_hash_value from v$session b where b.event = '通过上条SQL获取等待事件')
        order by piece asc;
        spool off
        
        
        
  • 相关阅读:
    Ui——创建视图的方法及过程
    iOS设计模式----原型模式
    浅谈OC中排序的方法
    Solid Dominoes Tilings (轮廓线dp打表 + 容器)
    Shell Necklace (dp递推改cdq分治 + fft)
    Rigid Frameworks (画图二分图规律 + DP + 数学组合容斥)
    PowMod (欧拉推式子 + 指数循环节)
    Necklace (全排列 + 匈牙利)
    GCD (RMQ + 二分)
    Game (思维)
  • 原文地址:https://www.cnblogs.com/polestar/p/9802817.html
Copyright © 2011-2022 走看看