关于Oracle数据库中行迁移/行链接的问题[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 coolyl 的 blog

一、行迁移/行链接的介绍

在实际的工作中我们经常会碰到一些oracle数据库性能较低的问题,当然,引起oracle数据库性能较低的原因是多方面的,我们能够通过一些正确的设计和诊断来尽量的避免一些oracle数据库性能不好,row migration (行迁移) & row chaining (行链接)就是其中我们可以尽量避免的引起oracle数据库性能低下的潜在问题。通过合理的诊断行迁移/行链接,我们可以较大幅度上提高oracle数据库的性能。

那究竟什么是行迁移/行链接呢,先让我们从oracleblock开始谈起。

操作系统的最小读写操作单元是操作系统的block,所以当创建一个oracle数据库的时候我们应该讲数据库的block size设置成为操作系统的block size的整数倍,oracle blockoracle数据库中读写操作的最小单元,oracle9i之前的oracle数据库版本中oracle block一旦在创建数据库的时候被设定后就没法再更改。为了在创建数据库之前确定一个合理的oracle block的大小,我们需要考虑一些因素,例如数据库本身的大小以及并发事务的数量等。使用一个合适的oracle block大小对于数据库的调优是非常重要的。

一个oracle block由三个部分组成,分别是数据块头、自由空间、实际数据三部份组成。

数据块头:主要包含有数据块地址的一些基本信息和段的类型,以及表和包含有数据的实际行的地址。

自由空间:是指可以为以后的更新和插入操作分配的空间,大小由pctfreepctused两个参数影响。

实际数据:是指在行内存储的实际数据。

  当创建或者更改任何表和索引的时候,oracle在空间控制方面使用两个存储参数:

  pctfree:为将来更新已经存在的数据预留空间的百分比。

  pctused:用于为插入一新行数据的最小空间的百分比。这个值决定了块的可用状态。可用的块时可以执行插入的块,不可用状态的块只能执行删除和修改,可用状态的块被放在freelist中。

  当表中一行的数据不能在一个数据block中放入的时候,这个时候就会发生两种情况,一种是行链接,另外一种就是行迁移了。

本文关键:关于Oracle数据库中行迁移/行链接的问题
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top