手工数据块的管理

手工数据块的管理是现在Oracle的默认方法。Oracle通过如下的参数来手工的配置数据块以便更有效的管理和控制数据块中磁盘空间的使用。

pctfree

pctused


freelists

Oracle为什么引入这些参数呢?为了提高系统的效率。
假设为了提高磁盘空间的利用率,在一开始就将一数据块装满数据。如果接下来有一个对数据块中的数据行进行的修改操作。而且修改操作将加大某一列的长度。此时数据块已经没有可供扩展的足够空间,Oracle就将这些数据存放在另一数据块中而在原来所在的数据行上放上一个指针指向真正的数据。这也称作数据的迁移。这样本来一行的数据就被放在了两个数据块中,从而增加了查询数据的磁盘I/O量,降低了系统的效率。

 

假设我们设置pctfree为15%,pctused为30%,则Oracle操作如下:
(1)在进行插入操作时,Oracle服务器要保留15%空闲空间,作为将来可能修改操作造成的扩展使用。
(2)当空闲空间小于或等于15%时,Oracle将数据块从空闲队列中去掉,即该块不能进行插入操作了。
(3)如果进行了删除操作或修改操作造成了数据行的缩小,即释放了磁盘空间。虽然空闲空间大于15%,但使用的空间大于30%,该块还不允许进行插入操作。
(4)只有当所使用的空间小于30%,该块才能被重新放入空闲队列中,即允许进行插入操作。


pctfree:该参数定义在每个数据块中预留空间的百分比。这部分空间只是在数据块中的数据行进行修改操作而造成空间的增长时使用的。该参数的默认值为10%.

freelists:用来定义一个段中定义空闲队列的个数。空闲队列是一个数据块的列表。这些数据块被用作插入操作的候选数据块。在默认情况下,创建一个段时只有一个空闲队列。根据需要可以通过设置freelists参数在一个段中创建多个空闲队列。

pctused:该参数定义每个数据块中已经使用的空间的百分比。只有当一个数据块中所使用的空间低于这一参数所设定的值时,Oracle服务器才将数据块放入空闲队列。默认是40%


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值