甲骨文高水位线详解(HWM)

  

  

  

  

  

  oracle段(段,在此,为了理解方便,建议把段作为表的一个同义词)都有一个在段内容纳数据的上限,我们把这个上限称为“高水mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment.HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历史最高水位,这也就是HWM的原始含义,当然不能说一个水库没水了,就说该水库的历史最高水位为0。但是如果我们在表上使用了截断命令,则该表的HWM会被重新置为0。

  

  甲骨文高水位线详解(HWM)

  

  

  

  HWM之下,直到重建或截除(截断)或收缩这个对象(收缩)。

  

  

  

  100000行的表,你执行select count(*)从标签;下面在删除选项卡中,将表中的所有行删掉,再次执行从选项卡选择count(*),结果显示只有0行,但执行该语句所花的时间和统计出100000行所用的时间一样多。

     

  <强>   

  

     HWM标记的所有的属于该表数据库块,即使该表中没有任何数据。

  

     

     

  <强>   

  

  

  

  

  

  

  

  I/O

  

  I/O逻辑标号较高,高水位线标记下方的空间中就可能浪费了一些数据块。

  

        

        

  

  

  DBA_extents视图也可以检查表的高水位线标记问题。

  

  

  

  

  

  

  

  

        

  <强>   

  

  

  

  

  

  

     

     <强>   

  

  

  

        

  

  

  

  

  

  

     

  

  

  

     

  

  

  

  

  

  

  级联子句还可以收缩索引段使用的空间;

     

     <强>   

  

  

  

  

  

  

     

  user_tables视图可以进行验证;

  

  

     

  

     

  nolog功能:

  

  

  

  nolog子句移动表,可以减少大量的重做日志。

  

  

  

  

     

  rowid发生变化,所有索引都会含有不正确的信息。

  

  改变指数……重建命令。

  

  

     

     <强>   

  

  

  

  

  

  

  

  

     

     <强>   

  

  

     

  <强>   :

  

  

  

  

     

  

     

  HWM ?

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  28672行的BIG_EMP1表为例进行说明:

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

     

  

  

  

     

  

  

  

  

  

  

  

  

  

  

  

  

  

     

  

  

  

  

  

  

  

  

  

  

  

甲骨文高水位线详解(HWM)