ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle的块清除 (Oracle block cleanout)

oracle的块清除 (Oracle block cleanout)

原创 Linux操作系统 作者:wujianbo702 时间:2008-09-03 11:18:34 0 删除 编辑

Oracle (block clean out) oracle的块清除

块清除即清除数据块上与“锁定”有关的信息。Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据的属性,存储在数据块首部。因此,每次访问数据时都要去看数据块头部的锁,如果数据已经提交,则可能需要清理这个块,换句话说,要将这些事务信息删除。因此这个动作就会生成redo。

Cleanout有2种,一种是fast commit cleanout(提交清除),另一种是delayed block cleanout(延迟清除).

提交清楚是如何工作的?Oracle会记录已修改的块列表,这些列表可以有20个块,Oracle根据需要分配多个这样的列表,但是如果这些修改的块加起来超过buffer_cache的10%,oracle就停止分配这样的列表,因此当提交时就只会清理最多10%buffer_cache的数据块,其余的部分就延迟清除,这样也是为了提高commit的效率。

还有一种情况,就是当事务还未commit时,修改的数据块已经写入硬盘,当发生commit时oracle并不会把block重新读入做cleanout,而是把cleanout留到下一次对此块的访问是完成。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/165278/viewspace-440732/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 10g里的ora_rowscn
请登录后发表评论 登录
全部评论

注册时间:2008-01-11

  • 博文量
    46
  • 访问量
    95715