高水位线
什么是高水位线(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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28282660/viewspace-1479094/