Welcome 微信登录

首页 / 数据库 / MySQL / Oracle行迁移和行链接详解

定义:行迁移:因为update、将行变长、原来的块已经放不下了、行被挪进新块、行链接:行一开始就太大、比如你插入了1w个字节的行、必须要分两个块存放、由此、行变长的时间先后可作为判断依据产生场景:行迁移Oracle会将整行的数据迁移到一个新的数据块上,而将该行原先的空间只放一个指针,指向该行的新的位置,并且该行原先空间的剩余空间不再被数据库使用,这些剩余的空间我们将其称之为空洞,这就是产生表碎片的主要原因,表碎片基本上也是不可避免的,但是我们可以将其降到一个我们可以接受的程度。注意,即使发生了行迁移,发生了行迁移的行的rowid 还是不会变化,这也是行迁移会引起数据库I/O性能降低的原因。行链接oracle会使用与该块链接的一块或多块数据块来容纳该行的数据。行连接经常在插入比较大的行时才会发生,如包含long, long row, lob等类型的数据。在这些情况下行链接是不可避免的。影响DB performance的表现形式读一行要读两个块,也就是要两次逻辑读insert or update的性能比较差利用索引查询已链接或迁移的行的select语句的性能比较差,因为他们需要额外的I/O如何才能检测到行迁移与行链接
  1. SQL> conn / as sysdba 
  2. Connected. 
  3.  
  4. SQL> @?/rdbms/admin/utlchain.sql 
  5.  
  6. Table created. 
  7.  
  8. SQL> analyze table hr.DEPARTMENTS LIST CHAINED ROWS
  9.  
  10. Table analyzed. 
  11.  
  12. SQL> select * from chained_rows; 
  13.  
  14. no rows selected
另外,如何获知行迁移(行链接)严重的表呢?DBA_TABLES视图的CHAINED_CNT列,该列有该表的链接行计数。尽管行迁移与行链接是两个不同的事情,但是在oracle内部,它们被当作一回事。所以当你检测行迁移与行链接时,你应该仔细的分析当前你正在处理的是行迁移还是行链接。
  • 1
  • 2
  • 下一页
分布式数据库:dblinkOracle数据库备份与恢复原理简述相关资讯      Oracle数据库基础教程  Oracle行迁移 
  • 在Oracle数据库中插入含有&符号的  (03/06/2013 09:20:14)
  • Oracle 执行计划更改导致数据加工  (02/13/2013 14:45:04)
  • 判断Oracle Sequence是否存在  (02/13/2013 14:32:26)
  • Oracle数据库中无法对数据表进行  (02/26/2013 14:24:58)
  • Oracle 在同一台主机上建立用户管  (02/13/2013 14:40:58)
  • Oracle em 无法启动,报not found错  (02/13/2013 14:29:48)
本文评论 查看全部评论 (0)
表情: 姓名: 字数