Chinaunix首页 | 论坛 | 博客
  • 博客访问: 274754
  • 博文数量: 80
  • 博客积分: 2269
  • 博客等级: 大尉
  • 技术积分: 836
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-09 11:07
文章分类

全部博文(80)

文章存档

2016年(1)

2013年(8)

2012年(23)

2011年(21)

2010年(21)

2009年(6)

我的朋友

分类: Oracle

2012-04-10 11:46:05

Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行数据的锁定,而是直接将锁作为数据块的属性,存储在数据块首部。 这个是通过ITL来实现的,一个事务要修改块中的数据,必须获得该块中的一个itl(通过initrans预先分配的或者是通过free space构建的)。通过itl和undo segment header中的transaction table,可以知道事务处于活动阶段,还是已经完成。事务在修改块时(其实就是在修改行)会检查行中row header中的标志位,如果该标志位为0(该行没有被活动的事务锁住,这是可能要进行deferred block cleanout等工作),就把该标志位修改为事务在该块获得的itl的序号,这样当前事务就获得了对记录的锁定,然后就可以修改行数据了,这也就是 oracle行锁实现的原理。
阅读(1946) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

天的星星2012-04-11 17:41:58

这种轻量级的锁定机制,怎么解释?