Oracle 降低高水位線
高水位線
什麼是高水位線(High Water Mark)?
所有的oracle段(segments)都有一個在段內容納資料的上限,我們把這個上限稱為“High Water Mark”
或HWM。這個HWM是一個標記,用來說明已經有多少沒有使用的資料塊分配給這個segment。HWM通常增長的
幅度為一次5個資料庫,原則上HWM只會增大,不會縮小,即使將表中的資料全部刪除,HWM還是為原值,
由於這個特點,使HWM很像一個水庫的歷史最高水位。
HWM資料庫的操作有如下影響:
a) 全表掃描通常要讀出直到HWM標記的所有的屬於該表資料庫塊,即使該表中沒有任何資料。
b)即使HWM以下有空閒的資料庫塊,鍵入在插入資料時使用了append關鍵字,則在插入的時候使用HWM以上
的資料塊此時HWM會自動增大。
如何知道一個表的HWM
實驗如下過程:
1)建立一個表插入一些資料
SQL> select * from t2;
NAME
-----------------------------------------------
半形北京(科技)有限(責任)公司
北京(科技)有限(責任)公司
半形北京(科技)有限(責任)公司
北京(科技)有限(責任)公司
半形北京(科技)有限(責任)公司
北京(科技)有限(責任)公司
半形北京(科技)有限(責任)公司
北京(科技)有限(責任)公司
半形北京(科技)有限(責任)公司
已選擇9行。
SQL> analyze table t2 estimate statistics;
表已分析。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
4 4 9
SQL> insert into t2 select * from t2;
已建立9行。
SQL> /
已建立18行。
SQL> /
已建立36行。
。。。
SQL> /
已建立18432行。
SQL> analyze table t2 compute statistics;
表已分析。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
247 9 36864
SQL> delete t2 where rownum<50000;
已刪除36864行。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
247 9 36864
SQL> analyze table t2 compute statistics;
表已分析。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
247 9 0
SQL> alter table t2 enable row movement;
表已更改。
SQL> alter table t2 shrink space;
表已更改。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
247 9 0
SQL> analyze table t2 compute statistics;
表已分析。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
1 7 0
SQL> alter table t2 disable row movement;
表已更改。
什麼是高水位線(High Water Mark)?
所有的oracle段(segments)都有一個在段內容納資料的上限,我們把這個上限稱為“High Water Mark”
或HWM。這個HWM是一個標記,用來說明已經有多少沒有使用的資料塊分配給這個segment。HWM通常增長的
幅度為一次5個資料庫,原則上HWM只會增大,不會縮小,即使將表中的資料全部刪除,HWM還是為原值,
由於這個特點,使HWM很像一個水庫的歷史最高水位。
HWM資料庫的操作有如下影響:
a) 全表掃描通常要讀出直到HWM標記的所有的屬於該表資料庫塊,即使該表中沒有任何資料。
b)即使HWM以下有空閒的資料庫塊,鍵入在插入資料時使用了append關鍵字,則在插入的時候使用HWM以上
的資料塊此時HWM會自動增大。
如何知道一個表的HWM
實驗如下過程:
1)建立一個表插入一些資料
SQL> select * from t2;
NAME
-----------------------------------------------
半形北京(科技)有限(責任)公司
北京(科技)有限(責任)公司
半形北京(科技)有限(責任)公司
北京(科技)有限(責任)公司
半形北京(科技)有限(責任)公司
北京(科技)有限(責任)公司
半形北京(科技)有限(責任)公司
北京(科技)有限(責任)公司
半形北京(科技)有限(責任)公司
已選擇9行。
SQL> analyze table t2 estimate statistics;
表已分析。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
4 4 9
SQL> insert into t2 select * from t2;
已建立9行。
SQL> /
已建立18行。
SQL> /
已建立36行。
。。。
SQL> /
已建立18432行。
SQL> analyze table t2 compute statistics;
表已分析。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
247 9 36864
SQL> delete t2 where rownum<50000;
已刪除36864行。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
247 9 36864
SQL> analyze table t2 compute statistics;
表已分析。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
247 9 0
SQL> alter table t2 enable row movement;
表已更改。
SQL> alter table t2 shrink space;
表已更改。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
247 9 0
SQL> analyze table t2 compute statistics;
表已分析。
SQL> select blocks, empty_blocks, num_rows from user_tables where table_name='T2';
BLOCKS EMPTY_BLOCKS NUM_ROWS
---------- ------------ ----------
1 7 0
SQL> alter table t2 disable row movement;
表已更改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28282660/viewspace-1479094/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle之降低高水位線Oracle
- oracle 高水位線及如何有效的降低高水位線Oracle
- 降低Oracle高水位線的方法Oracle
- ORACLE資料庫降低高水位線方法Oracle資料庫
- ORACLE 高水位線(HWM)Oracle
- oracle 回收高水位線Oracle
- oracle回收高水位線Oracle
- oracle高水位線處理Oracle
- oracle 高水位線詳解Oracle
- oracle的高水位線HWMOracle
- oracle的高水位線(HWM)Oracle
- 一、oracle 高水位線詳解Oracle
- Oracle的高水位線介紹Oracle
- Oracle 高水位線的一點研究Oracle
- oracle表碎片以及整理(高水位線)Oracle
- Oracle高水位Oracle
- Oracle delete 高水位線處理問題Oracledelete
- Oracle高水位線(HWM)及效能優化Oracle優化
- 對Oracle高水位線的研究實踐Oracle
- Oracle表段中的高水位線HWMOracle
- oracle回收高水位Oracle
- Oracle 高水位(HWM)Oracle
- Oracle案例10——HWM(高水位線)效能優化Oracle優化
- oracle高水位問題Oracle
- oracle 高水位分析處理Oracle
- Oracle 高水位(HWM)標記Oracle
- delete與高水位線HWM回收delete
- 關於高水位線和deletedelete
- 高水位線、行遷移行連結
- ORACLE的簡單處理高水位Oracle
- ORACLE高水位表的查詢方法Oracle
- 深入瞭解oracle的高水位(HWM)Oracle
- Oracle表段中高水位線HWMOracle
- Oracle 找出需要回收高水位的表Oracle
- 【TABLESPACE】怎麼去降低資料檔案的高水位呢(BLOCK_ID)BloC
- oracle11g表的高水位線hwm與dbms_space系列一Oracle
- Oracle 高水位查詢和處理方法彙總Oracle
- Oracle段高水位(HWM, high water mark)問題Oracle