???高水位線好比水庫(kù)中儲(chǔ)水的水位線,用于描述數(shù)據(jù)庫(kù)中段的擴(kuò)展方式。高水位線對(duì)全表掃描方式有著至關(guān)重要的影響。當(dāng)使用delete 操作
表記錄時(shí),高水位線并不會(huì)下降,隨之導(dǎo)致的是全表掃描的實(shí)際開銷并沒有任何減少。本文給出高水位線的描述,如何降低高水位線,以及高水
位線對(duì)全表掃描的影響。
?
一、何謂高水位線
????如前所述,類似于水庫(kù)中儲(chǔ)水的水位線。只不過(guò)在數(shù)據(jù)庫(kù)中用于描述段的擴(kuò)展方式。
????可以將數(shù)據(jù)段或索引段等想象為一個(gè)從左到右依次排開的一系列塊。當(dāng)這些塊中未填充任何數(shù)據(jù)時(shí),高水位線位于塊的最左端(底端)
????隨著記錄的不斷增加,新塊不斷地被填充并使用,高水位線隨之向右移動(dòng)。高水位線之上為未格式化的數(shù)據(jù)塊。
????刪除(delete)操作之后,高水位線之下的塊處于空閑狀態(tài),但高水位線并不隨之下降,直到重建,截?cái)嗷蚴湛s表段。
????全表掃描會(huì)掃描高水位線之下的所有塊,包括空閑數(shù)據(jù)塊(執(zhí)行了delete操作)。
????
????低高水位線
??????是在使用ASSM時(shí)的一個(gè)概念。即使用ASSM時(shí)除了高水位線之外,還包括一個(gè)低高水位線。低高水位線一定是位于高水位線之下。
??????當(dāng)段使用MSSM管理方式時(shí)只有一種情況即只存在一個(gè)高水位線。
??????使用MMSM時(shí),當(dāng)HWM升高時(shí),Oracle立即格式化所有塊且有效,并可以安全讀取。僅當(dāng)?shù)谝淮问褂脮r(shí)完成格式化,便于安全讀取數(shù)據(jù)。
??????使用ASSM時(shí),當(dāng)HWM升高時(shí),Oracle并不會(huì)立即格式化所有塊。僅當(dāng)?shù)谝淮问褂脮r(shí)完成格式化,便于安全讀取數(shù)據(jù)。
??????使用低高水位線可以減少當(dāng)全面掃描表段時(shí),低高水位線與高水位線之間不安全塊的檢查數(shù)量。即低高水位線之下的塊不再檢查。
???
二、演示高水位線與全表掃描
三、總結(jié)
??1、高水線直接決定了全表掃描所需要的I/O開銷
??2、delete操作不會(huì)降低高水位線,高水位線之下的所有塊依然被掃描
??3、使用truncate 會(huì)重置高水位線到0位
??4、定期使用alter table tab_name shrink space cascade 有效減少該對(duì)象上的I/O開銷
??
四、延伸參考
??
收縮表段(shrink space)
?
??
dbms_xplan之display_cursor函數(shù)的使用
?
??
dbms_xplan之display函數(shù)的使用
?
??
執(zhí)行計(jì)劃中各字段各模塊描述
?
??
Oracle 綁定變量窺探
?
??
Oracle 自適應(yīng)共享游標(biāo)
??
??
Oracle ROWID?
??
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
