• 【原】Cache Buffer Chain 第四篇


    作者:david_zhang@sh 【转载时请以超链接形式标明文章】

    链接:http://www.cnblogs.com/david-zhang-index/p/3873357.html

    【测试1】低效的SQL引起的catch buffers chains 锁存器争用

    创建测试表

    1 create table cbc_test(id number,name char(100));
    2 insert into cbc_test(id,name) select rownum,object_name from dba_objects;

    创建索引

    1 create index cbc_test_idx on cbc_test(id);

    创建扫描表的procedure

    1 create or replace procedure cbc_do_select
    2 is 3 begin 4 for x in (select /*+ INDEX(cbc_test cbc_test_idx)*/ * from cbc_test where id >= 0) loop 5 null; 6 end loop; 7 end; 8 /

    同时打开2000个会话执行读取工作

    1 var job_no number;
    2 begin
    3 for idx in 1..2000 loop
    4 dbms_job.submit(:job_no,'cbc_do_select;');
    5 commit;
    6 end loop;
    7 end;
    8 /

    查看整个系统当前等待

    1 SELECT event,
    2   total_waits ,
    3   time_waited
    4 FROM v$session_event
    5 WHERE sid=
    6   (SELECT sid FROM v$mystat WHERE rownum=1
    7   )
    8 ORDER BY 3 DESC;

     结果如下:

     1 EVENT                          TOTAL_WAITS TIME_WAITED
     2 ------------------------------ ----------- -----------
     3 SQL*Net message from client             44       46352
     4 library cache lock                     202         253
     5 buffer busy waits                       56         113
     6 latch: In memory undo latch             43          86
     7 latch: cache buffers chains             33          55
     8 control file sequential read         14154          22
     9 db file sequential read                 82          18
    10 events in waitclass Other                6          11
    11 library cache: mutex X                   8          10
    12 latch: shared pool                       4           5
    13 latch: row cache objects                 1           2
    14 SQL*Net message to client               45           0
    15 Disk file operations I/O                 4           0
    16 SQL*Net break/reset to client            1           0
    17 log file sync                            1           0

    根据cache buffers chains事件,找出对应的latch地址

    1 select addr, gets, misses, sleeps
    2   from v$latch_children
    3  where name = 'cache buffers chains'
    4    and misses > 100000
    5  order by 3 desc;

    结果:

    1 ADDR                   GETS     MISSES     SLEEPS
    2 ---------------- ---------- ---------- ----------
    3 0000000124ECCBB0   10485987    5260833          0
    4 0000000124E2B5A8   20671341    9806756      27942

    根据ADDR找出关联的文件号和块号

     1 SQL> select FILE#,DBABLK,CLASS,STATE from x$bh where HLADDR='0000000124E2B5A8';
     2 
     3      FILE#     DBABLK      CLASS      STATE
     4 ---------- ---------- ---------- ----------
     5          4    3585766          1          1
     6          3       9411         20          1
     7          4    3651302          1          1
     8          4    3581428          1          1
     9          6      71918          1          1
    10          6      71918          1          3
    11          6      71918          1          3
    12          6      71918          1          3
    13          6      71918          1          3
    14          6      71918          1          3
    15          3       5073         38          0

    根据文件号和块号,找出对象名称,输入6和71918

    1 select owner, segment_name
    2   from dba_extents
    3  where file_id = &p1
    4    and &p2 between block_id and block_id + blocks - 1;

    找出的对象名称

    1 OWNER                          SEGMENT_NAME
    2 ------------------------------ ------------------------------
    3 SCOTT                           EMP_FP_IDX1

    待续。。。

  • 相关阅读:
    HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别
    Collections.synchronizedMap()与ConcurrentHashMap的区别
    hashcode、equals和 ==详解
    Redis使用总结(二、缓存和数据库双写一致性问题)
    解决vue多个路由共用一个页面的问题
    RESTFUL API 安全认证方式
    Spring Bean详细讲解
    关于slf4j log4j log4j2的jar包配合使用的那些事
    slf4j、jcl、jul、log4j1、log4j2、logback大总结[转]
    经过测试,feign只能通过@RequestBody传对象参数
  • 原文地址:https://www.cnblogs.com/david-zhang-index/p/3873357.html
Copyright © 2020-2023  润新知