7.6 数据块的内容和参数
从上图中可以看出在数据块中每一数据行的头部有一个锁位,该锁位只记录了该行在事务中所使用的事务槽(transaction slot )号,而事务槽是在数据块头中,有关事务的控制信息都放在了事务槽中,在上图中3、8数据行的有关事务的信息分别放在了块头的第1和2事务槽中.Oracle服务器是通过每一行的锁位中事务槽号在数据块头上找到所对应的事务槽,并利用该槽中的信息来完成该数据行的事务控制。
7.7 手工数据块的管理
图7-7中由于PCTFREE定义为15%,PCTUSED 定义为30%,因此Orcale的操作如下:
(1) 在进行插入操作时,oracle服务器要保留数据块空间总数的15%空闲空间,为将来可能的修改操作所造成的扩展使用。
(2) 当空闲小于或等于15%时,oracle将该数据块从空闲队列中去掉,即该块不能进行插入操作了。
(3) 如果进行了删除操作或修改造成了数据行的缩小,即释放了磁盘空间,虽然空闲空间大于15%(所使用的空间小于85%)但所使用的空间大于30%,该还不允许进行插入操作。
(4) 只有当所使用的空间小于30%(PCTUSED)时,该块才能被重新放入空闲队列中,即允许进行插入操作。
l PCTFREE:该参数定义在每个数据块中预留空间的百分比。这部分空间只是在数据块中的数据行进行修改操作(update)而造成空间的增长时使用的。该参数的默认值为10%。
l FREELISTS:该参数用来在一个段中定义空闲队列(free list)的个数。空闲队列是一个数据块的列表,这些数据块将被用作插入操作的候选数据块。在默认情况下,创建一个段时只有一个空闲队列。根据需要可以通过设置FREELISTS参数在一个段中创建多个空闲队列。
l PCTUSED:该参数定义每个数据块中已经使用的空间的百分比。只有当一个数据块中所使用的空间低于这一参数所设定的值时,oracle服务器才将这一数据块放入空闲队列。该参数的默认值为40%