oracle中的latch: cache buffers chains 与热块
oracle中的latch: cache buffers chains 與熱塊
- oracle中的latch: cache buffers chains 與熱塊
- ORACLE中的buffer cache
- latch: cache buffers chains產生的原因
- 優化措施
- 查找熱塊
oracle中的latch: cache buffers chains 與熱塊
ORACLE中的buffer cache
oracle中有各種buffer cache事件,buffer cache簡單的說就是緩沖區,主要用于緩沖數據塊,buffer cache位于sga中,所以當發現SGA過大時,可以優先考慮是buffer cache中緩存中的數據塊過多導致的
Buffer cache的類型通常包括
- default buffer cache
- keep buffer cache
- recycle buffer cache
- nk buffer caches
buffer caceh采用lru算法來淘汰掉過時的數據
latch: cache buffers chains產生的原因
latch: cache buffers chains事件會導致數據庫執行卡頓。buffer cache主要緩存的就是數據塊,當一個數據塊被放入buffer cache中,oracle會同時將數據塊對應的buffer header放置到一個hash列表中,任何一個進程想訪問或者修改buffer cache中的數據,都需要先獲得一個latch,也就是cache buffers chains,當有多個進程同時訪問一個數據塊時,就會產生latch: cache buffers chains時間。
優化措施
latch: cache buffers chains 本身不可避免,是數據庫在高并發在下對一致性事務的一種保護,但是如果latch: cache buffers chains長時間出現。主要原因可能是SQL出現了效率問題,其次是sga的大小確實需要擴充。
SGA的大小可以通過AWR報告查看;
SQL的效率要重點關注SQL的邏輯讀,因為邏輯讀會大大概率導致latch: cache buffers chains不釋放,邏輯讀可以關注V$SQLAREA中的buffer_gets 和executions
減少邏輯讀的關鍵:
- 優化SQL的執行邏輯,特別是表關聯的時候,減少主表(基表)參與關聯的數據量
- 在表上增加合適的索引
查找熱塊
latch: cache buffers chains 是由于多個進程訪問同一個數據塊產生的,也就是熱塊,那么如果能定位到熱塊就會對問題定位和解決有很大的幫助
(以下來源網絡來源連接)
總結
以上是生活随笔為你收集整理的oracle中的latch: cache buffers chains 与热块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本地管理多个git账号
- 下一篇: 汇编语言的前言