消除行链接

行链接

当第一次插入行时,由于行太长而不能容纳在一个数据块中时,就会发生行链接。在这种情况下,oracle会使用与该块链接的一块或多块数据块来容纳该行的数据。行连接经常在插入比较大的行时才会发生,如包含long, long row, lob等类型的数据。在这些情况下行链接是不可避免的。

行迁移

当修改不是行链接的行时,当修改后的行长度大于修改前的行长度,并且该数据块中的空闲空间已经比较小而不能完全容纳该行的数据时,就会发生行迁移。在这种情况下,Oracle会将整行的数据迁移到一个新的数据块上,而将该行原先的空间只放一个指针,指向该行的新的位置,并且该行原先空间的剩余空间不再被数据库使用,这些剩余的空间我们将其称之为空洞,这就是产生表碎片的主要

少量的行链接不会对性能有很大的影响,一个大致准则是如果表中超过15%的数据行是行链接的,那么就要注意了

可以再MOVE同时设置更高的PCTFREE

alter table emp move picture 40

使用ANALYZE命令查看行链接情况

@?/rdbms/admin/utlchain.sql

上面的脚本创建了名为chained_rows的表,现在可以运行ANALYZE命令,填充该表

analyze table emp list chain rows;

接下来查询chain_rows表

select count(*) from chained_rows where table_name=‘EMP’;

消除行链接:

1.创建一个临时表保存原来存储行链接的行

2.从原始表中删除连接的行

3.将临时表中的数据行插入到原始表中

create table temp_emp as select * from emp where rowid in(select headword from chained_rows where table_name=‘EMP’);
delete from emp  where rowid in(select headword from chained_rows where table_name=‘EMP’);
insert into emp select * from temp_emp;
时间: 2024-08-07 21:20:39

消除行链接的相关文章

消除行链接、行迁移

行迁移和行链接是经常接触到的一个概念.行链接是记录太大,一个数据块无法存储,oracle就会将其存储在相链接的块中,如果记录中数据类型包括:LONG.LONG RAW.LOB等数据类型时,行链接则无法避免了,可以在AWR实例活动统计部分的table fetch continued row分析可以看出当前数据库中链接行的数量:行迁移是指在update时,数据块已满,记录更新后记录长度增加了,oracle会将整条记录迁移到新的块中,行迁移后ROWID是不变的.参考ID 102989.1消除行链接和行

ORACLE 行迁移和行链接

1. 行迁移 当发出update导致记录行长增加,block的剩余空间不足以存放这条记录,就会产生行迁移,发生行迁移时rowid不会改变,原来的block 中会用一个指针存放这条记录在新的block中的地址,发生行迁移会对性能产生影响,因为读这条记录会读两个BLOCK. 行迁移:导致应用需要访问更多的数据块,性能下降. 预防行迁移:1. 将数据块的PCTFREE调大:2. 针对表空间扩大数据块大小 消除行迁移的办法: 创建行迁移表,$ORACLE_HOME/rdbms/admin目录下的utlc

模拟Oracle行迁移和行链接

行链接消除方法创建大的block块------------------ 参考tom kyte的例子----------------------------------------------创建4k blocksize的表空间SQL> alter system set db_4k_cache_size=1m scope=both; System altered.SQL> create tablespace tbs1 datafile '/u01/app/oracle/oradata/test/

通过段调优顾问帮助解决行链接问题

--解决行链接问题 SQL> create tablespace hzqtbs datafile '/u01/app/oracle/oradata/prod/hzqtbs.dbf' size 600m; Tablespace created. SQL> create user hzq identified by hzq default tablespace hzqtbs quota unlimited on hzqtbs account unlock; User created. SQL>

Oracle 行链接(Row chaining) 与行迁移(Row Migration)

场景:如果VarChar和VarChar2更经常修改,且修改的数据长度每次都不一样,这会引起“行迁移”现象 概念: 行链接(Row chaining) 与行迁移(Row Migration)当一行的数据过长而不能插入一个单个数据块中时,可能发生两种事情:行链接(row chaining)或行迁移(row migration). 行链接当第一次插入行时,由于行太长而不能容纳在一个数据块中时,就会发生行链接.在这种情况下,oracle会使用与该块链接的一块或多块数据块来容纳该行的数据.行连接经常在插

Oracle行迁移和行链接

行迁移和行链接都会导致Oracle性能下降,这篇文章将介绍什么是行迁移和行链接,它们带来的问题,如何来判断它们,并提供了解决它们的办法. 什么是行迁移和行链接 行迁移 Oracle的数据块会保留部分空间供以后更新使用,通常的数据块结构如下: PCTFREE定义一个块保留的空间百分比,默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被update(具体看下面的PCTFREE介绍). 当一条记录被更新时,数据库引擎首先会尝试在它保存的数据块中寻找足够的空闲空间,如果没有

2.1.5基础之命令行链接ftp dos中的ftp上传下载文件

Windows命令行batcmd脚本的应用之自动备份 异地备份2.1.5基础之命令行链接ftp dos中的ftp上传下载文件 讲解环境 VMware Workstation 12 桌面虚拟计算机软件创建虚拟机安装操作系统:http://edu.51cto.com/course/10007.html PC1:192.168.1.201 远程地址:192.168.100.100:2001 windows service2008 pc1 Admin111FTP虚拟用户 fileaa fileaaPC2

两种命名行链接VPN的方式

我在使用云梯VPN:推荐地址 但是云梯提供了多个服务器,偶尔有服务器不好用,需要自己去Ping测试服务器的连接速度.于是琢磨着不能浪费技能,写个脚本自动ping测速,然后选择最佳的服务器链接并进行VPN的链接. 那么问题来了,怎么去修改 VPN 的 IP 配置,怎么去链接 VPN.下面记录俩我搜索到的命名.有了命令,就可以写 bat 或者 python 等脚本了. rasdial.exe 命令 Rasdial 命令的帮助:Microsoft 简单介绍连接和断开.连接VPN: rasdial "你

消除行内元素的间距

设置了 inline-block 的两个 div 之间会有间距,需要消除. <div class="container"> <div class="left">left</div> <div class="right">right</div> </div> .container { font-size: 0; /* 消除间距 */ } .left, .right { disp