- 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之前的所有數據塊不再做這種“慎重”考察,而是直接讀取使用。
推薦閱讀
- 算法訓練營:入門篇(全彩版)
- Java編程指南:基礎知識、類庫應用及案例設計
- Learning ArcGIS Pro
- Visual C
- 高級語言程序設計(C語言版):基于計算思維能力培養
- 單片機應用與調試項目教程(C語言版)
- Visual C++開發入行真功夫
- Java編程的邏輯
- 響應式架構:消息模式Actor實現與Scala、Akka應用集成
- Oracle GoldenGate 12c Implementer's Guide
- HTML+CSS+JavaScript網頁設計從入門到精通 (清華社"視頻大講堂"大系·網絡開發視頻大講堂)
- UX Design for Mobile
- Unity 3D UI Essentials
- MySQL從入門到精通
- 打造流暢的Android App