日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

latch: cache buffers chains 阻塞 buffer busy waits

發布時間:2023/12/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 latch: cache buffers chains 阻塞 buffer busy waits 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

os: centos 7.4
db: oracle 11.2.0.4

版本

# cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) # # su - oracle Last login: Tue Jan 21 03:40:05 CST 2020 on pts/0 $ sqlplus / as sysdba;SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 3 10:29:09 2020Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing optionsSQL> set lines 300; SQL> set pages 300; SQL> SQL> select * from v$version;BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE 11.2.0.4.0 Production TNS for Linux: Version 11.2.0.4.0 - Production NLSRTL Version 11.2.0.4.0 - ProductionSQL>

latch:cache buffers chains

當一個數據塊讀入到sga中時,該塊的塊頭(buffer header)會放置在一個hash bucket的鏈表(hash chain)中。該內存結構由一系列cache buffers chains子latch保護(又名hash latch或者cbc latch)。對Buffer cache中的塊,要select或者update、insert,delete等,都得先獲得cache buffers chains子latch,以保證對chain的排他訪問。若在過程中發生爭用,就會等待latch:cache buffers chains事件。

在以下場景容易出現該事件

  • 熱塊( hot block )
  • --直接找出熱點塊 SELECT OBJECT_NAME, SUBOBJECT_NAMEFROM DBA_OBJECTSWHERE DATA_OBJECT_ID IN(SELECT DATA_OBJECT_IDFROM (SELECT OBJ DATA_OBJECT_ID, FILE#, DBABLK, CLASS, STATE, TCHFROM X$BHWHERE HLADDR IN (SELECT ADDRFROM (SELECT ADDRFROM V$LATCH_CHILDRENORDER BY (GETS + MISSES + SLEEPS) DESC)WHERE ROWNUM < 10)ORDER BY TCH DESC)WHERE ROWNUM < 10);
  • 低效率的SQL語句(主要體現在邏輯讀過高,個人感覺也體現在熱塊上)
  • 可以通過將普通表調整成分區表,普通索引調整為分區索引的方法去嘗試解決。

    buffer busy waits

    當一個會話獲取數 buffer cache 中一個數據塊時,但是 buffer 處于繁忙狀態,無法獲取,

    主要原因為

  • 其它會話正在將數據塊讀入 buffer
  • 其它會話以排它模式持有buffer
  • 可以將普通表做成分區表,將定期將索引刪除并重建,調整表和索引pctfree參數

    參考:

    總結

    以上是生活随笔為你收集整理的latch: cache buffers chains 阻塞 buffer busy waits的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。