行链接和行迁移的秘密

发表于:2012-2-20 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:robinson_0612    来源:51Testing软件测试网采编

  一、概述

  如果你的Oracle数据库性能低下,行链接和行迁移可能是其中的原因之一。我们能够通过合理的设计或调整数据库来阻止这个现象。

  行链接和行迁移是能够被避免的两个潜在性问题。我们可以通过合理的调整来提高数据库性能。本文主要描述的是:

  ● 什么是行迁移与行链接

  ● 如何判断行迁移与行链接

  ● 如何避免行迁移与行链接

  当使用索引读取单行时,行迁移影响OLTP系统。最糟糕的情形是,对所有读取操作而言,增加了额外的I/O。行链接则影响索引读和全表扫描。

  注:在翻译行(row)时使用记录来描述(便于理解),如第一行,使用第一条记录。

  二、Oralce 块

  操作系统块的大小是操作系统读写的最小操作单元,也是操作系统文件的属性之一。当创建一个数据库时,选择一个基于操作系统块的整数倍大小作为Oracle数据库块的大小。Oracle数据库读写操作则是以Oracle块为最小单位,而非操作系统块。一旦设置了Oracle数据块的大小,则在整个数据库生命期间不能被更改(除 Oracle 9i之外)。因此为Oracle数据库定制合理的Oralce块大小,象预期数据库总大小以及并发用户数这些因素应当予以考虑。

  数据库块由下列逻辑结构(在整个数据库结构下)

  头部:头部包含一些常用信息,象块地址,段的类型(表段、索引段等)。也包含一些表、实际数据行的地址信息等。

  空闲空间:用于保留给后续DML(update/insert)操作的空间。通常受pctfree和pctused参数的影响。

  数据:实际的数据内容

  FREELIST, PCTFREE, PCTUSED

  当创建或修改任意表,索引时。Oracle使用两个存储参数来控制空间的分配

  PCTFREE 为已存在数据将来更新需要保留空闲空间的百分比

  PCTUSED 新插入数据可使用空间的最小百分比,该值决定块何时回收到 freelist 结构中

  FREELIST Oracle通过维护该列表来记录或更新所有可用的数据块

  Oracle 首先在freelist列表上搜索可用的空闲数据块,搜索成功之后将数据插入到那个空闲块。块在free list 列表中的可用性由pctfree参数值来决定。起初一个空块在freelist列表上列出,并且会一直保留,直到到空闲空间达到pctfree设定的值。

  当一个块被使用且达到pctfree设定的值之后则该块从freelist列表被移除,而当数据块的可用空间低于PCTUSED值的时候,该块又会回收,即重新回到freelist列表。

  Oracle使用freelist方式以提高数据库性能。因此,每一个insert 操作,Oracle 仅仅需要搜索freelist结构,而不是搜索所有数据块。

61/6123456>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号