1、什么是高水线(High Water Mark)?数据库
Oracle 数据库在建立一张表时,会为这张表分配一个段空间(segment),为了方便理解,把段空间容纳数据的上限,称之为高水位线(HIGH WATER MARK) HWM ,HWM是一个标记,用来讲明表示有多少未使用的块分配给这个段。
两个结论:
1.水位线以上表示已经分配但还未使用块(block),水位先如下爱表示已经分配且已经使用过的块(包含了正在使用的块和使用过的且被删除了数据的空块)
2.理论上来讲,一张表的水位线只会增大不会减少(除非经过特殊的方法重置),即便将表中的数据所有删除,HWM仍是为原值。oracle
2、HWM数据库的操做有以下影响:app
a) 全表扫描一般要读出直到HWM标记的全部的属于该表数据库块,即便该表中没有任何数据。spa
b) 即便HWM如下有空闲的数据库块,键入在插入数据时使用了append关键字,HWM也会不断增大,占用系统资源,表所占的实际空间会不断增大,致使系统出现问题索引
3、高水位线缘由以及解决方法:资源
产生缘由:
1.操做表时使用删除了大量数据。
2.在插入时使用了/append nologging/语句,append关键字会从为表分配段中的随机位置插入,水位线会不断增高。
3.Sql load 时默认使用truncate 自带了reuse storage参数,致使truncate之后水位线不会下降。同步
解决方法:
1.直接truncate table drop storage
2.创建一张维护表按期move并重建