
假设你一个块可以存放 100 个数据,而且 PCTFREE 是 10,PCTUSED 是 40,则:不断的
向块中插入数据,如果当存放到 90 个时,就不能存放新的数据,这是受 pctfree 来控制,预
留的空间是给 UPDATE 用的。
当你删除一个数据后,再想插入个新数据行不行?不行,必须是删除 41 个,即低于 40
个以后才能插入新的数据的,这是受 pctused 来控制的。
注意:如果表空间上启用了 ASSM,在建立表的时候,只能指定 PCTFREE,否则可用指定
PCTFREE 和 PCTUSED。
行链接:
第一次插入行时,行太大,无法放入一个数据块中。
在行链接中,Oracle 数据库将该行的数据存储在为该段保留的一个或多个数据块链中。行链
接通常发生在大行中。示例包括数据类型为 LONG 或 LONG RAW 的行、2kb 块中的 VARCHAR2
(4000)列,或包含大量列的行。在这种情况下,链锁在所难免。
行迁移:
原来适合于一个数据块的行将被更新,从而使整个行长度增加,但可用空间不足,无法容纳
更新的行。
在行迁移中,Oracle 数据库会将整行移动到一个新的数据块中,假设该行可以放入新的数据
块中。已迁移行的原始行段包含指向包含已迁移行的新块的指针或“转发地址”。已迁移行的
rowid 不会更改。
图 12-14 显示了在数据块中插入一个大行。该行对于左块太大,因此数据库通过将第一行放
在左块中,将第二行块放在右块中来链接行。
评论