7.2.2 区的回收

在一般情况下,从段中删除数据时,数据所占用的空间并没有被释放,除非这个数据库对象被删除。在以下几种情况中,会发生区的回收:

·一个对象被删除。

·对表进行整理。

·对索引进行重建或合并。

·在表上执行TRUNCATE命令。

·手工执行命令释放段中HWM以下未使用的空间。

在这里需要注意的是,TRUNCATE命令的执行结果是将表中的数据删除,从表面上来看类似于DELETE,但是这两条命令有很大的区别。在执行TRUNCATE命令时,表段中的HWM被移动到段的开始位置,这就意味着下次写数据是从段的开始位置进行的,以前的数据所占用的空间被释放。而在执行DELETE命令时,HWM并没有移动,这就意味着数据虽然被删除了,但是数据所占用的空间并没有被释放。