ORACLE⾼⽔位(HWM)是什么意思
在Oracle数据的存储中,可以把存储空间想象为⼀个⽔库,数据想象为⽔库中的⽔。⽔库中的⽔的位置有⼀条线叫做⽔位线,在Oracle中,这条线被称为⾼⽔位线(High-warter mark, HWM)。在数据库表刚建⽴的时候,由于没有任何数据,所以这个时候⽔位线是空的,也就是说HWM为最低值。当插⼊了数据以后,⾼⽔位线就会上涨,但是这⾥也有⼀个特性,就是如果你采⽤delete语句删除数据的话,数据虽然被删除了,但是⾼⽔位线却没有降低,还是你刚才删除数据以前那么⾼的⽔位。也就是说,这条⾼⽔位线在⽇常的增删操作中只会上涨,不会下跌。
也就是说,⾼⽔位线不会因为 DELETE 操作⽽降低。
⾼⽔位并不会下降,随之导致的是全表扫描的实际开销并没有任何减少。
delete数据是没⽤的,即使数据删除了,⾼⽔位的值也不会下降。
释放表的⾼⽔位通常有如下⼏种办法:
(1)对表进⾏MOVE操作:ALTER TABLE TABLE_NAME MOVE;。若表上存在索引,则记得重建索引。
truncate的意思(2)对表进⾏SHRINK SPACE操作:ALTER TABLE TABLE_NAME SHRINK SPACE;,注意,在执⾏该
指令之前必须开启⾏移动:ALTER TABLE TABLE_NAME ENABLE ROW MOVEMENT;。该⽅法的优点是:在碎⽚整理结束后,表上相关的索引仍然有效,缺点是会产⽣⼤量的UNDO和REDO。
(3)复制要保留的数据到临时表T,DROP原表,然后RENAME临时表T为原表。
(4)exp/imp或expdp/impdp重构表。
(5)若表中没有数据则直接使⽤TRUNCATE来释放⾼⽔位。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论