簡(jiǎn)單點(diǎn)說(shuō),在oracle的block上都有活動(dòng)事務(wù)的標(biāo)志的,如果一個(gè)事務(wù)commit后,由于某些block在commit之前已經(jīng)寫回datafile,或者事務(wù)影響到的block數(shù)過(guò)多,則commit的時(shí)候只會(huì)清理undo segment header中的事務(wù)表信息,data block上的事務(wù)標(biāo)志不會(huì)清除,在否則代
簡(jiǎn)單點(diǎn)說(shuō),在oracle的block上都有活動(dòng)事務(wù)的標(biāo)志的,如果一個(gè)事務(wù)commit后,由于某些block在commit之前已經(jīng)寫回datafile,或者事務(wù)影響到的block數(shù)過(guò)多,則commit的時(shí)候只會(huì)清理undo segment header中的事務(wù)表信息,data block上的事務(wù)標(biāo)志不會(huì)清除,在否則代價(jià)過(guò)高。那么在一些讀取這些block時(shí),需要將這些事務(wù)標(biāo)志進(jìn)行清除,就是延遲塊清除
塊清除即清除數(shù)據(jù)塊上與“鎖定”有關(guān)的信息。Oracle的鎖機(jī)制是一種輕量級(jí)的鎖定機(jī)制,不是通過(guò)構(gòu)建鎖列表來(lái)進(jìn)行數(shù)據(jù)的鎖定管理,而是直接將鎖作為數(shù)據(jù)的屬性,存儲(chǔ)在數(shù)據(jù)塊首部。因此,每次訪問(wèn)數(shù)據(jù)時(shí)都要去看數(shù)據(jù)塊頭部的鎖,如果數(shù)據(jù)已經(jīng)提交,則可能需要清理這個(gè)塊,換句話說(shuō),要將這些事務(wù)信息刪除。因此這個(gè)動(dòng)作就會(huì)生成redo。
Cleanout有2種,一種是fast commit cleanout(提交清除),另一種是delayed block cleanout(延遲清除).
提交清楚是如何工作的?Oracle會(huì)記錄已修改的塊列表,這些列表可以有20個(gè)塊,Oracle根據(jù)需要分配多個(gè)這樣的列表,但是如果這些修改的塊加起來(lái)超過(guò)buffer_cache的10%,oracle就停止分配這樣的列表,因此當(dāng)提交時(shí)就只會(huì)清理最多10%buffer_cache的數(shù)據(jù)塊,其余的部分就延遲清除,這樣也是為了提高commit的效率。
還有一種情況,就是當(dāng)事務(wù)還未commit時(shí),修改的數(shù)據(jù)塊已經(jīng)寫入硬盤,當(dāng)發(fā)生commit時(shí)oracle并不會(huì)把block重新讀入做cleanout,而是把cleanout留到下一次對(duì)此塊的訪問(wèn)是完成。
Cleanout有2種,一種是fast commit cleanout,
另一種是delayed block cleanout.Oracle的每個(gè)事務(wù)(transaction)修改不超過(guò)10%buffer cache的數(shù)據(jù)塊時(shí),oracle做的是fast commit cleanout。如果一個(gè)事務(wù)(transaction)修改的塊超過(guò)10% buffer cache,那么超過(guò)的塊就執(zhí)行delayed block cleanout,還有一種情況,就是當(dāng)事務(wù)還未commit時(shí),修改的數(shù)據(jù)塊已經(jīng)寫入硬盤,當(dāng)發(fā)生commit時(shí)oracle并不會(huì)把block重新讀入做cleanout,而是把cleanout留到下一次對(duì)此塊的訪問(wèn)是完成。
當(dāng)我們update 數(shù)據(jù)之后,并且沒有commit,此時(shí)我們flush buffer cache,將修改的數(shù)據(jù)塊,flush 到硬盤,那么此時(shí)發(fā)生的就是delay block cleanout聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com