STORAGE 规范

当 TRUNCATE 操作开始时,可选的 DROP STORAGE 或 REUSE STORAGE 关键字指定数据库服务器对表的存储 extent 采取什么行动。如果您省略此规范,则 DROP STORAGE 选项是缺省的。

使用缺省的或显式的 DROP STORAGE 选项,成功的 TRUNCATE 语句释放当前分配给表及其索引的 extent 之中除了第一个 extent 之外的所有 extent。您可以 oncheck -pT table 命令显示当前的 extent 列表。如果您仅有一个 extent,则不会释放空间。

例如,对于下表,将 4 个缺省的 8 页 extent 合并到当前的第一个 extent 内。还有第二个更大的 extent:
  Extents                      
        Logical Page  Physical Page     Size Physical Pages
        0       1:104455       32             32
        32       1:104495     4576           4576
在 TRUNCATE 语句运行之后,从同一 oncheck 命令的输出显示为:
  Extents                      
        Logical Page  Physical Page     Size Physical Pages
        0       1:104455       32             32

或者,如果您想要为随后加载的数据保持分配给同一表的相同的存储空间,请指定 REUSE STORAGE 关键字来防止该空间被分配。TRUNCATE 的 REUSE STORAGE 选项可使得引用中的存储管理更有效,在这些应用中,定期地清空同一表并以新的行重新加载。

下列示例删除 state 表,并释放它的除了第一 extent 之外的所有 extent:
TRUNCATE TABLE state DROP STORAGE;
下列示例删除同一表,但仅移除实际的数据。所有 extent 保持不变。
TRUNCATE TABLE state REUSE STORAGE;

不论您指定 DROP STORAGE 还是 REUSE STORAGE,当提交 TRUNCATE 事务时,对于表的所有行,释放任何行外数据值。还释放在 TRUNCATE 事务中不再被引用的任何 BLOB 或 CLOB 值所占据的存储。