快速学会Oracle数据块
创始人
2024-06-11 20:40:09
0

学习Oracle时,你可能会遇到Oracle数据块问题,这里将介绍Oracle数据块问题的解决方法,在这里拿出来和大家分享一下。因数据库中的数据被存放在Oracle数据块中,因此如何分配Oracle数据块中的空间将直接影响其存取性能。

当用update语句更新一行数据时,可能使该行的数据增加,从而使其在一个Oracle数据块内容纳不下。这时,Oracle就寻找能容纳下该行的Oracle数据块,如果能找到这样的块,便把该行全部存入新块中(这称为行移动)。如果找不到能容纳该整行的Oracle数据块,则把该行切成若干片,然后把每一片分别存放在一个Oracle数据块中,于是这样的行被存放在多个Oracle数据块中,这种行称为链接行。查询一个链接行则需要多次I/O操作,从而产生I/O瓶颈,这将降低数据的存取性能。

解决上述问题的办法是,使用带list chained rows选项的analyze命令来标出表或集中那些移动或链接的行,并将其集中在一个输出表中。对于这些输出表中的链接行,可增加其Oracle数据块的大小,以提高数据存取性能。

减少在已有表中的迁移和链接行的具体步骤如下:

(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数据块长度。

【编辑推荐】

  1. 闲扯Oracle数据导入
  2. 精炼概括Oracle性能测试
  3. 简介Oracle INDEX提示
  4. 五分钟精通Oracle Hints
  5. 简单介绍Oracle驱动表

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...