首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux数据库>oracle>正文

带你轻松掌握行分链与行迁移的相关概念

http://www.oklinux.cn  2008-03-17  赛迪网 Alice  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

在实际的应用中,如果行分链与行迁移经常删除,那么可能不能重用块中的自由空间,所以对于这种情况,我们要利用空间的话,可以把pctused设置高点主要是在INSERT操作期间引发行分链操作。而行的迁移主要由UPDATE操作引起。

行链接

行链接: Insert or Update引起,一个Row存在不同的block中, 行不同部分通过不同块地址(ROWID)链成一个链,可以通过设置大的DB_BLOCK_SIZE来减少行链接的发生,但无法避免(LOB)

行迁移: Update引起,由于PCTFREE过小,ROWID未变, 可以通过增大PCTFREE的值减少行迁移的发生。

行分链是DB_BLOCK_SIZE设置不够大,以至于对于一些大的行(比如varchar2(32666),blob,clob的长度,大于块大小(比如4K))这样一个块肯定不能保存一行记录,就需要将行分开保存到不同的块中.特别是blob这样的类型,最好设置一个单独的表空间来保存实际的数据.

包含一个LONG/LONG RAW列时,在这种情况下,后者通常保存在最后Oracle维护一个LOB定位器允许对行外LOB快速访问。LOB定位器,大约有24个字节大小,DISABLE STORAGE IN ROW参数来实现保存在行外(分散开),不管数据大小行分链很难控制(除非通过选择DB_BLOCK_SIZE足够大,可以装下整个行,这通常是不可能的)。然而,行迁移可以通过CREATE / ALTER TABLE命令的PCTFREE和PCTUSED参数有效控制。

>>>>>另一种发生行链接是在行迁移不成功的情况下进行的,如UPDATE操作引起。当更新一行使其大小增加

而块中的当前自由空间不足以放下该行,那么就把整个行取出来放到一个有足够空间的块中(如果没有块

有所需的空间放整行,行要分成链;如果即使行分成链仍然没有足够的空间,那么产生一个错误消息

“ORA-1650-55:Unable to extend)

行迁移

我们如果要更新一行(更新总是允许的),并将其行加大,而加大的行所需要的空间大于块中的自由空间时.假使我们把一行中多出的空间放到另一个块中,而另一行放在原来块中(这就是行分链接),从而使原来块100%的填充.这样好象只会在单独的行时会发生,ORACLE会把这整行迁移到其他能容纳空间的块中(这就是行迁移).这样会在原来的块中留一个行头,行头中保留了放实际行的块的地址.对于行链接,但是应用程序从来不知道这些,使用SQL也没有什么不同,他只是性能上的原因.如果通过索引来读取这行,索引会指向最初的新块不仅是使用了两个左右的IO读取索引,加上一个IO读取这张表1通过使用PCTFREE保持每块中的自由空间,允许行仍位于原来的块中,不用管这种扩张。

如果PCTFREE为0,那么所有的自由空间将被INSERT使用,后续的UPDATE将使行迁移到另外一个块中,以适合扩展的需要。

在理想的情况下,设置PCTFREE为位于行大小的中间值与最大值之间。例如,如果行大小的中间值估计为大约900字节,最大的行大小为1255字节,那么设置PCTFREE值在10(缺省)和30之间是比较合理的。


上一篇:在存储过程中拥有"role"权限的特殊性   下一篇:教你快速掌握“外连接”的两种标准写法

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·教你快速掌握“外连接”的两种标准写法
·在存储过程中拥有"role"权限的特殊性
·详细讲解Oracle表分区的相关概念及其优点
·实例讲解Oracle中一些关于权限的数据字典
·用SYS执行全文索引的建立时出现权限不足
·快速解决"Oracle"数据库中的常见问题
·详细讲解获得当前"SCN"的几种有效方式
·通过幸存的Oracle文件修复Oracle9i数据
·实例讲解"Oracle"数据库的分页显示
·带你轻松接触Oracle DBLink的简单运用
·教你快速掌握Oracle数据库的周数计算
·深入讲解Oracle数据库的多栏输出语句
·如何使用pipeline function获得实时输出
·Oracle数据库中如何对时间格式进行处理
·Oracle利用传输表空间导出导入数据的步骤
·讲解jython访问Oracle数据库的具体步骤
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·关于Oracle将目标数据库设为归档模式应
·Linux下OCI基础:配置Instant Client连
·Oracle中被锁定的解决办法
·Oracle 11G 无法连接到数据库实例故障
·浅谈创建Oracle数据库连接的两种方法
·如何从Oracle技术支持获得更多
·Oracle数据库中安全知识介绍
·Oracle推出Linux服务并不成功
·Oracle专用服务器的内存结构分布原则
·如何在RAC环境下修改Oracle字符集
·Oracle过程中执行动态SQL或DDL语句
·2008年Oracle错误、备份、升级等最热门
  阅读排行
·详解远程SHELL下安装配置RedHat ES 5的
·Ubuntu上安装Oracle 10G及相关配置
·Oracle高级复制(同步复制)配置步骤详细
·如何修改遗失的MySQL的ROOT用户密码
·Redhat Linux AS4 安装Oracle 10g(包括
·Linux下OCI基础:配置Instant Client连
·解决启动数据库时发生的ORA-12528错误
·在 Oracle Enterprise Linux 上升级到
·Oracle 10g表空间创建的完整步骤
·centos 5.0中成功安装Oracle10g (1020
·如何在RAC环境下修改Oracle字符集
·Oracle数据库导入导出方法的个人总结
·巧用Oracle执行计划机制提高查询性能
·Oracle 10g 在AIX 5.3上安装过程笔记
·Linux真机环境Oracle 10gR2 RAC 安装完
网摘收藏: