ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 行链接/行迁移

行链接/行迁移

原创 Linux操作系统 作者:qgw521 时间:2010-02-03 09:41:35 0 删除 编辑

8以上版本的ROWID组成 OOOOOOFFFBBBBBBRRR 8以下ROWID组成(也叫受限Rowid) BBBBBBBB.RRRR.FFFF 其中,O序列是对象ID,F序列是文件ID,B序列是块ID,R序列是行ID

当表中一行的数据不能在一个数据block中放入的时候,就会发生两种情况,一种是行链接,另外一种就是行迁移。这个时候对这行数据操作的性能就会降低,因为系统必须要扫描更多的块来获得这行的信息而导致更大的IO.

行链接/迁移是指在不同块之间的链接/迁移,块分别是由数据块头、自由空间、实际数据三部份组成

数据块头:主要包含有数据块地址的一些基本信息和段的类型,以及表和包含有数据的实际行的地址。
自由空间:是指可以为以后的更新和插入操作分配的空间,大小由PCTFREE和PCTUSED两个参数影响。
实际数据:是指在行内存储的实际数据。

行迁移:当一行记录初始插入的时候事可以存储在一个块中的,但由于后来更新操作导致行长增加了,而块的自由空间已经完全满了,这个时候就产生了行迁移。在这种情况下,系统将会迁移整行数据到一个新的块中(假设一个块中可以存储下整行数据),但系统会保留被迁移行的原始指针指向新的存放行数据的块,这就意味着被迁移行的ROWID是不会改变的。

行链接:当第一次插入数据的时候如果一个块(any block)不能存放一行记录的情况下。这种情况下,系统将使用链接一个或者多个在这个段中保留的块存储这一行记录;行链接比较容易发生在比较大的行上,例如行上有LONG、LONG RAW、LOB等数据类型的字段。


要查看表是否发生了行链接/迁移:
1、运行$ORACLE_HOME/rdbms/admin/utlchain.sql
2、analyze table table_name list chained rows into CHAINED_ROWS;
3、select *from CHAINED_ROWS where table_name='table_name';

清除表的行链接/迁移
方法1:create table table_name_tmp select *from table_name
truncate table table_name
insert into table_name select *from table_name_tmp
方法2:用exp工具导出表,然后删除这个表,最后用imp工具导入这表
方法3:alter table table_name move tablespace tablespace_name,然后再重新表的索引

查看行号,Block号,文件号,对象号例子。

Ranbo>rowid) block#,dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_object(rowid) object
#,code
Ranbo>,lname from prd where rownum<4;

ROWID               ROW# BLOCK# FILE# OBJECT# CODE                                                         LNAME
------------------ ----- ------ ----- ------- ------------------------------------------------------
AAASEyAAJAAAAxVAAA     0   3157     9   74034 936705                                                       ELBOW SLV TOP1
AAASEyAAJAAAAxVAAB     1   3157     9   74034 938706                                                       KNIT PANT RED
AAASEyAAJAAAAxVAAC     2   3157     9   74034 938707                                                       WOVEN PANT

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13387766/viewspace-626701/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 用CASE WHEN 排序
请登录后发表评论 登录
全部评论

注册时间:2008-06-06

  • 博文量
    128
  • 访问量
    304328