zoukankan      html  css  js  c++  java
  • X Sequence – SV contention

    Sequence – SV contention

    Waits for cached sequence when sequence is used from multiple instance

    10046 trace: 
    WAIT #139899759861648: nam='enq: SV -  contention' ela= 4276 type|mode=1398145029 
    id1=88851 id2=0 obj#=-1 tim=1385221394056801
    
    SQL> select owner, object_name, object_type from  dba_objects where object_id=88851;
    OWNER                   OBJECT_NAME            OBJECT_TYPE
    ----------------------- ---------------------- ------------------
    SCOTT                   T1_SEQ                 SEQUENCE

     

    Waits for UNCACHED sequences when used from multiple instances

    WAIT #140557198270352: nam='row cache lock' ela= 1227 cache id=13 mode=0 request=5 obj#=-1 tim=1384249119100670
    SQL> select type, parameter from v$rowcache where cache#=13;
    TYPE        PARAMETER
    ----------- --------------------------------
    PARENT        dc_sequences
    ..
    WAIT #140557198260504: nam='gc cr block 2-way' ela= 529 p1=1 p2=667 p3=1 obj#=74 tim=1384249119101498
    WAIT #140557198253360: nam='gc current block 2-way' ela= 687 p1=1 p2=667 p3=33554433 obj#=74 tim=1384249119102947
    
    SQL> SELECT segment_name, segment_type, block_id, blocks
            FROM   dba_extents
            WHERE file_id = &file_no AND ( &block_value BETWEEN block_id 
             AND ( block_id + blocks -1 ) );
    Enter value for file_no: 1
    Enter value for block_value: 667
    SEGMENT_NAME   SEGMENT_TYPE         BLOCK_ID     BLOCKS
    ------------- -------------------- ---------- ----------
    SEQ$          TABLE                      664          8a
    • For each seq.nextval we are waiting 1.2 ms for a row cache lock and 0.6 ms for a CR request on SEQ$ and again 0.6 ms for getting a the most CURRENT block from SEQ$.
    • The complete wait time using a UNCACHED sequence is about 2.4 ms for each seq.nextval operation
    • UNCACHED sequences triggers a library cache lock where CACHED sequences triggers a SV lock

    Performance test results

    Test Env : 11.2.0.4 3-node RAC 3-node Rac cluster / 10 Threads each  inserting 1000 rows - 10.000 rows in summary 
    Test                                    Command                             Runtime    TPS
    Using sequence with ORDER NOCACHE       $ java UCPDemo grac4 10 1000 -seq       46s    212
    Using sequence with ORDER CACHE 20      $ java UCPDemo grac4 10 1000 -seq       33s    297
    Using sequence with ORDER CACHE 1000    $ java UCPDemo grac4 10 1000 -seq       32s    312      
    Using programming-methods to create     $ java UCPDemo grac4 10 1000 -noseq     11s    875
    •  Always try to use application based sequences if possible ( about 4x faster than ORDER NOCACHE )
    • Use CACHE attribute if possible and avoid ORDER NOCACHE combination
    •  For heavily used sequences use 1000 for its cache size – for infrequently use sequences use 20 for cache size parameter

    AWR report for NOCACHE ORDER sequence sample

        ---------------------------------------------------   ----------------------   ------------------------------   --------------------------
      I#   Class      Event                      Waits %Timeouts        Total(s) Avg(ms) %DB time        Avg      Min      Max  Std Dev  Cnt
    ----   ---------- ------------------------- ------------ ---------   ------------- ------- --------   -------- -------- -------- -------- ----
       *   Concurrenc row cache lock                  9,572       0.0          368.76    38.5    82.70      38.26    35.73    42.92     4.04    3
                      DB CPU                            N/A       N/A           25.39     N/A     5.69                                          3
           Commit     log file sync                   9,968       0.0           24.44     2.5     5.48       2.42     2.07     2.69     0.32    3
           Other      row cache process              73,768       0.0            5.78     0.1     1.30       0.08     0.03     0.17     0.08    3
           Cluster    gc cr block busy                2,896       0.0            4.37     1.5     0.98       1.66     1.28     2.37     0.61    3
           Cluster    gc current block 2-way          6,603       0.0            4.08     0.6     0.91       0.62     0.60     0.64     0.02    3
           Cluster    gc current block 3-way          3,223       0.0            3.44     1.1     0.77       1.08     0.94     1.32     0.20    3
           Cluster    gc cr block 2-way               4,047       0.0            3.18     0.8     0.71       0.83     0.66     0.99     0.17    3
           Cluster    gc cr block 3-way               2,431       0.0            2.87     1.2     0.64       1.43     1.12     1.59     0.27    3
           Other      gcs log flush sync              3,310       0.0            1.87     0.6     0.42       0.53     0.49     0.59     0.05    3

    AWR report for CACHE 1000 ORDER sequence sample

          ----------------------------------------  ----------------------   ------------------------------   -----------------------------------
      I#   Class      Event                           Waits %Timeouts        Total(s) Avg(ms) %DB time        Avg      Min      Max  Std Dev  Cnt
    ----   ---------- ----------------------------- ------------ ---------   ------------- ------- --------   -------- -------- -------- --------
       *   Other      enq: SV -  contention         9,953       0.0          197.99    19.9    80.68      21.22     7.87    28.11    11.56    3
           Commit     log file sync                10,005       0.0           24.83     2.5    10.12       2.41     2.04     3.09     0.59    3
                      DB CPU                          N/A       N/A           12.25     N/A     4.99                                          3
           Configurat enq: HW - contention            73       0.0             3.12    42.7     1.27      43.72    34.21    59.78    13.99    3
           Other      reliable message                 5       0.0             1.79   357.3     0.73     594.44     1.67  1779.91  1026.65    3
           Cluster    gc current block 3-way         250       0.0             1.58     6.3     0.64       5.18     1.91    11.56     5.52    3
           Concurrenc library cache lock              30      10.0             0.96    32.1     0.39      34.92    25.53    52.26    15.04    3
           Cluster    gc buffer busy acquire         118       0.0             0.94     8.0     0.38       8.64     3.69    13.70     5.01    3
           Cluster    gc current block 2-way         612       0.0             0.86     1.4     0.35       1.41     0.78     2.54     0.98    3
           Cluster    gc current block busy          161       0.0             0.81     5.0     0.33       4.96     3.92     5.66     0.92    3
    •  Each update on a sequence requires a row cache lock ( Caching reduces this updates – but can lead to gaps if instance crashes )
    •  if using ORDER and NOCACHE attribute every seq.nextval access triggers a row cache lock
    • if using NOCACHE sequence row cache lock event could be  a major wait event
    • If using   CACHE enq: SV –  contention becomes a major wait event
  • 相关阅读:
    pandas 移动列的方法
    D-Link 路由器新漏洞,黑客可远程执行任意命令
    世界第一黑客:未来云安全的威胁
    黑客针对参与Covid-19疫苗分发的公司
    iPhone为盲人自动识别并标记按钮和UI功能
    小心!基于UEFI引导的病毒,重装系统也清除不了
    美国禁用面部识别技术,到底是什么原因?
    Apple的双向无线充电器现已上市,预计最快在本周发货
    警惕黑客通过打印机侵入你的系统
    为什么未来没有密码?黑客还能破解吗?网友:同样危险
  • 原文地址:https://www.cnblogs.com/chendian0/p/12183252.html
Copyright © 2011-2022 走看看