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