Usage of Oracle Block

本文详细介绍了Oracle数据库中插入、更新和删除操作对数据块的影响,涉及PCTFREE、PCTUSED参数以及高水标记(HWM)的概念。通过示例展示了数据在数据块中的存储变化,帮助理解Oracle的数据管理机制。
摘要由CSDN通过智能技术生成

       本文主要介绍插入(Insert),更新(Update),删除(Delete)操作时数据在数据块(Block)中的变化。首先简单讲一下几个相关的参数。

       一.相关参数

       在手动管理的表空间(Manually Managed Tablespace)中,用户可以使用PCTFREE和PCTUSED这两个存储管理参数来控制对某段(Segment)进行插入和更新操作时,如何利用属于此段的数据块(Data Block)中的可用空间。用户也可以在创建或修改索引时为其设定PCTFREE参数。

       1.PCTFREE

         PCTFREE参数用来设置一个数据块中至少需要保留多少可用空间(百分比),为数据块中已有的数据更新世可能发生的行数据长度增长做准备。例如,当用户用CREATE TABLE 语句创建表时指定了PCTFREE为10,那么此表对应的数据段中的每个数据块至少要保留10%的可用空间,以备块中已有数据更新时使用,只要数据块中数据区与数据块头的容量之和不超过1-PCTFREE的值,用户就可以向其中插入新数据。    

       2.PCTUSED

         PCTUSED参数用于决定一个数据块是否可以用户插入新数据,他的依据是数据区域和数据块头的容量之和占数据块全部容量的最大百分比,当一个数据块中的可用空间比例小于PCTFREE参数值时,Oracle认为此数据块无法被用户插入新数据,直到数据块中的数据区域和数据块头之和的比例小于PCTUSED参数值,Oracle才会再次使用这个块来插入新的数据。

       3.FreelistFreelist groups

         FreelistFreelist groups是可插入数据的数据块的列表与列表集。当有新数据插入时,Oracle通过查询此列表找到可以插入数据的数据块。block剩余空间不足以插入一条记录,同时该block的使用率已经超过PCTUSED定义的值并且该数据块位于freelist header处时,该块也会从freelist上摘走,术语(UNLINK)。当有数据删除(delete)的时候,只有该数据块(block)中的数据被删除到PCTUSED定义的值时,该数据块(block)才会重新被链接(LINK)freelist中。

       4.高水标记(high water mark)

         简单来说,HWM就是一个segment中已使用和未使用的数据块(block)的分界线,当请求新的空闲块,并且现有的空闲列表(freelist)中的块不能满足要求时,HWM指向的块将被标记为已使用,然后HWM将移动指向下一个未使用过的块。 

      Freelist只是管理高水位标志以下的空闲空间,而实际上一个segment可用的空闲空间包括两种类型:已经分配给这个segment但是从来没有使用过的高水位标志之上的blocks。位于高水位标志之下,被链接到freelist上的blocks。下图为数据块的使用示例:

block usage

      二.插入(Insert),更新(Update),删除(Delete)操作对数据块的影响

         创建一个名为test的表,并向里面插入三条记录用于测试。用dba用户登录创建PL/SQL</

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值