存储空间管理

在同一个表空间中,数据以数据库对象为单位组织在一起的,一般情况下,一个数据库对象对应一个段,一个表空间包含多个段。


段的类型

通过视图DBA_SEGMENTS,可以查询已经存在的段类型。

分区表段,将一个大表分成几个分区,每个分区对应一个段。这些分区表段可以存储在同一个表空间中,也可以存储在不同的表空间中。

分区表主要应用于数据仓库,它的主要作用是缩小数据库查询的范围,加快查询的速度。

分区索引,与表分区类似,目的是加快查询索引的速度,需要注意的是,只有对表进行分区后,才能在表上创建分区索引。


区的回收

一般情况下,从段中删除数据时,数据所占用的空间并没有被释放,除非这个数据库对象被删除。

在以下几种情况会发生区的回收。

  1. 一个对象被删除
  2. 对表进行整理
  3. 对索引进行重建或合并
  4. 在表上执行TRUNCATE命令
  5. 手工执行命令释放段中HWM以下未使用的空间

DELETE 与  TRUNCATE

执行TRUNCATE命令时,表段中的HWM被移动到段的开始位置,这就意味着下次写数据是从段的开始位置进行的,以前的数据所占用的空间被释放。

在执行DELETE命令,HWM并没有移动,这就意味着数据虽然被删除了,但是数据所占用的空间并你没有被释放。


数据块的空间管理

   主要涉及空闲空间的管理。

PCTFREE(0-99):设置数据块中必须保留的最少空间,参数值是一个百分比,保留空间是为UPDATE操作使用的,减少数据块间的迁移。

PCTUSED:再次向数据块中写入数据时,已使用空间的百分比。

一般情况下,PCTFREE和PCTUSD两个参数共同使用,控制数据块存储空间的使用。


你可能感兴趣的:(存储空间管理)