一条数据过长不能插入一个单个数据块中时候,就会发生两种事情:行链接 或 行迁移
1.行链接
Oracle 会使用该块链接的一块或者多块数据块来容纳改行的数据,行链接进厂插入比较大的数据时才会产生,经常发生行链接的数据类型:long,long row,lob 等数据类型
2.行迁移
当修改不是行链接的行时,修改后的长度大于修改前的行长度,并且改数据块中的空闲空间已经比较小不能完全容纳改行的数据,就会发生行迁移,这时候,Oracle 会将整行的数据迁移到一个新的数据块上,将原先的空间只一个指针,指向改行的新位置,原先空间剩余空间不在被数据块使用,剩余的空间称为 空洞
3.行链接和行迁移引起数据库性能下降的原因
引起多余的 i/o 造成的,通过索引访问已有的行迁移现象,数据库必须扫描一个以上的数据库才能检索到改行的数据 ,导致 插入 和 更新 的性能较差,需要执行额外的处理,利用索引查询已经链接和迁移的的行时候,select 语句的性能比较差,要执行额外的 i/o
4.预防 行链接 和 行迁移
数据块的 pctfree 调大
针对表空间扩大数据块大小