ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【性能优化】消除行链接和行迁移的思路和方法

【性能优化】消除行链接和行迁移的思路和方法

Linux操作系统 作者:dbSeeSee 时间:2016-06-28 23:17:35 0 删除 编辑
关于行链接和行迁移的概念请参考文章《【概念】行链接和行迁移的概念、模拟及甄别》
(http://space.itpub.net/519536/viewspace-624408)。


众所周知,行链接和行迁移会导致系统的查询效率降低,因为在这种情况下查询需要扫描更多的数据块才能得到所需的信息。本文尝试给出消除行链接和行迁移的思路和方法。

1.消除行链接和行迁移思路
1)针对发生行链接和行迁移的数据行进行重新整理;

2)将数据迁移到大尺寸数据块表空间中存放。

2.消除行链接和行迁移方法
假设T表出现行链接、行迁移问题。

1)针对发生行链接和行迁移的数据行进行重新整理的方法
(1)使用CTAS(Create Table As Select)方法将出现行链接和行迁移的数据汇总在表T_Temp中。具体命令参考如下:
SQL> create table T_Temp as select * from T where rowid in (select head_rowid from chained_rows where table_name='T');

(2)删除T表中发生行链接行迁移的数据
SQL> delete from T where rowid in (select head_rowid from chained_rows where table_name='T');

(3)将表T_Temp中存放的数据插回到T表
SQL> insert into T select * from T_Temp;

(4)删除表T_Temp
SQL> drop table T_Temp purge;

通过这么一系列的维护,行链接和行迁移现象将会明显减少或消失(如果不存在一个数据块存放不下一行数据的情况)。

2)将数据迁移到大尺寸数据块表空间中存放
如果存在一个数据块存放不下一行数据的情况,我们需要通过创建大尺寸数据块表空间,然后将表移动到新表空间上存放的方法来解决。
(1)创建大尺寸数据块表空间
有关大尺寸数据块表空间的创建请参见文章《【TABLESPACE】创建非标准块大小(标准块8K)表空间》(http://space.itpub.net/519536/viewspace-668281)
SQL> create tablespace TBS_16K datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform. size 4M blocksize 16K;

(2)将表T移动到新建的表空间上
SQL> alter table T move TBS_16K;

3.小结
在OLTP系统中出现行链接和行迁移的可能性比较高,我们可以使用文中介绍的方法定期对这些数据进行调整,防止系统出现性能问题。

Good luck.

secooler
11.04.28

-- The End --

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

请登录后发表评论 登录
全部评论

注册时间:2013-07-04

  • 博文量
    28
  • 访问量
    96231