0

如果我有一个长度为 4000 的 VARCHAR2 列的 Oracle 表,并且我在表中插入了一个 4000 字符串,然后用 1 个字符串更新了该行,我是否需要做任何事情来制作其他 3999 个字符可重复使用的空间,还是自动可重复使用?

4

1 回答 1

1

更新后,行所在的块中释放了 3999 字节的空间(假设 1 个字符 = 数据库字符集中的 1 个字节)。如果该块中的其他行需要扩展大小或该行中的其他列需要扩展大小,则该空间将立即可用。当然,由于大多数数据库使用 8k 块,最大块大小为 32k,由于原始行太大,因此该特定块中的行可能相对较少。

Oracle 还跟踪块的完整程度,并使用该信息使它们可用于后续insert操作。其机制取决于表空间的类型(本地或字典管理)、段空间管理策略(自动或手动)和表级参数,如pctused. 但是,在较高级别上,释放单个数据块中的 4k 空间几乎肯定会导致该数据块可用于未来的insert操作(或用于update导致其他块中的行需要迁移到新块的操作)或跨多个块链接)。因此,几乎可以肯定该空间可以重复使用。

于 2014-06-06T18:17:41.303 回答