oracle中的BLOB与CLOB字段更新时的行迁移与称链接
2008-11-16 10:07
375 查看
数据块空间的分配因数据库中的数据被存放在数据块中,因此如何分配数据块中的空间将直接影响其存取性能。当用update语句更新一行数据时,可能使该行的数据增加,从而使其在一个数据块内容纳不下。这时,Oracle就寻找能容纳下该行的数据块,如果能找到这样的块,便把该行全部存入新块中(这称为行移动)。如果找不到能容纳该整行的数据块,则把该行切成若干片,然后把每一片分别存放在一个数据块中,于是这样的行被存放在多个数据块中,这种行称为链接行。查询一个链接行则需要多次I/O操作,从而产生I/O瓶颈,这将降低数据的存取性能。
解决上述问题的办法是,使用带list chained rows选项的analyze命令来标出表或集中那些移动或链接 的行,并将其集中在一个输出表中。对于这些输出表中的链接行,可增加其数据块的大小,以提高数据 存取性能。减少在已有表中的迁移和链接行的具体步骤如下: (1)用analyze命令收集信息: analyze table *** list chained rows; (2)查询输出表: select * from chained_rows where table_name='test_chain'; (3)消除迁移行:创造与已有表有相同列的中间表来持有迁移行和链接行: create table int_*** as seelct * from *** where rowid in (select head_rowid from chained_rows where table_name='***'); 从已有表中删除迁移行和链接行: delete from *** where rowid in (select head_rowid from chained_rows where table_name='***'); 把中间表中的行插入已有表中: insert into *** select 8 from int_***; 撤消中间表: drop table int_***; (4)从输出表中删除第1步收集的信息: delete from chained_rows where table_name='***'; (5)再次使用analyze命令,并查询输出表; (6)在输出表中出现的任何行是链接行,可增加数据块长度。
解决上述问题的办法是,使用带list chained rows选项的analyze命令来标出表或集中那些移动或链接 的行,并将其集中在一个输出表中。对于这些输出表中的链接行,可增加其数据块的大小,以提高数据 存取性能。减少在已有表中的迁移和链接行的具体步骤如下: (1)用analyze命令收集信息: analyze table *** list chained rows; (2)查询输出表: select * from chained_rows where table_name='test_chain'; (3)消除迁移行:创造与已有表有相同列的中间表来持有迁移行和链接行: create table int_*** as seelct * from *** where rowid in (select head_rowid from chained_rows where table_name='***'); 从已有表中删除迁移行和链接行: delete from *** where rowid in (select head_rowid from chained_rows where table_name='***'); 把中间表中的行插入已有表中: insert into *** select 8 from int_***; 撤消中间表: drop table int_***; (4)从输出表中删除第1步收集的信息: delete from chained_rows where table_name='***'; (5)再次使用analyze命令,并查询输出表; (6)在输出表中出现的任何行是链接行,可增加数据块长度。
相关文章推荐
- oracle 更新clob字段
- jdbc hibernate ibatis 操作Blob 和Clob类型字段(不断更新)
- dwr+oracle进行clob、blob字段插入、修改和读取
- 同时写oracle的CLOB和BLOB字段的方法
- 关于Oracle的BLOB、CLOB字段的操作方法(分JDBC和Hibernate两种)
- oracle中的大字段clob和blob操作
- 在Delphi5 中操作Oracle的Blob/Clob字段的Bug.
- mysql和Oracle在对clob和blob字段的处理
- JAVA对Oracle中BLOB、CLOB类型字段的操作说明
- Oracle中的BLOB和CLOB字段类型的区别
- mysql和Oracle在对clob和blob字段的处理
- Oracle中的大字段 Blob/Clob
- oracle字段类型blob,clob,nclob
- 迁移Oracle数据备忘(表中有blob字段)
- 从 Oracle 大字段(blob,clob)的读、写认识 Java JDBC操作全攻略
- Oracle中的BLOB和CLOB字段类型的区别
- Oracle中的大字段 Blob/Clob
- oracle的blob和clob字段的处理
- (转)通过JDBC 操作 ORACLE BLOB,CLOB字段类型
- Spring+Hibernate中处理Oracle的大字段(clob二进制\blob大字符串)