官术网_书友最值得收藏!

  • Oracle DBA基礎教程
  • 林樹澤
  • 587字
  • 2021-03-26 13:21:42

4.4 理解高水位線(HWM)

對于表段使用術語“高水位線”來標記使用過的數據塊的邊界,如下所示。

    |1|2|3|4|……|10000|未用。

此時第10000個數據塊就是這個表段的高水位線所在。

對于新建的表,高水位線位于第一個塊,隨著時間的推移,在這些表段中存入數據,高水位線會隨之移動。如果刪除了表中的數據,此時某些數據塊即使為空不再包含數據,但是依然保持高水位線的高度,但是在發生表重建、TRUNCATE以及SHINK時會調整高水位線,調整后的高水位線下的數據塊都包含數據。

假設有一個超大的表,我們刪除其中90%的數據,但是高水位線沒有調整,如果對該表進行了全表掃描,此時依然會對刪除前的所有數據塊進行掃描,依然會花費很多時間。這里是想告訴讀者,高水位線HWM是Oracle訪問數據實現全表掃描的數據塊范圍。

如果使用TRUNCATE而不是DELETE刪除表中的所有數據,此時會調整高水位線到表段的第一個數據塊。

ASSM中的HWM(自動斷空間管理 Automatic Segment Space Management,High Water Mark)的管理更加細致。對于ASSM,Oracle維護著一個低HWM,它的含義是低HWM之前的所有數據塊都是有數據的,可以直接讀取,而低HWM之后到HWM之間的所有數據需要慎重對待,這部分數據塊有可能已經格式化,有可能還沒有被格式化使用,此時需要參考ASSM的位圖查看數據塊使用情況。

    |1|2|3|4|……|10000|……|15000| 使用|未用|18000
                         |                |
                         低HWM       HWM

15000為低HWM,18000為高HWM,在高低之間是一個“灰色”區域,Oracle會慎重對待,通過ASSM的位圖查看數據塊使用情況。而15000之前的所有數據塊不再做這種“慎重”考察,而是直接讀取使用。

主站蜘蛛池模板: 华宁县| 奉化市| 方城县| 璧山县| 木里| 治多县| 九龙坡区| 霍城县| 沙坪坝区| 区。| 巴青县| 日喀则市| 左权县| 晋中市| 大新县| 焉耆| 临江市| 天祝| 深泽县| 保德县| 大埔区| 乳山市| 泽州县| 武邑县| 昌图县| 通道| 蓝田县| 巫溪县| 德惠市| 宁远县| 洛川县| 米易县| 大同市| 浠水县| 尼木县| 广平县| 蓝山县| 边坝县| 化德县| 淮北市| 云浮市|