Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1099634
  • 博文数量: 276
  • 博客积分: 10077
  • 博客等级: 上将
  • 技术积分: 2513
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-24 20:31
文章分类

全部博文(276)

文章存档

2020年(1)

2015年(5)

2012年(2)

2011年(6)

2010年(7)

2009年(224)

2008年(31)

我的朋友

分类: Oracle

2009-06-19 09:43:15

表中的某一行被一个事务锁定,这个锁的信息会被记录在行所在的块头内。
当另一个事务想去获取该行级锁时,它不得不去搜索块头内包含的信息,
直到获得这个锁,这个很容易知道锁的信息是存放在块头内的。
那块头存放的是关于锁的哪一部分信息的呢?它是一种简单的数据结构“ITL” ,
一个包含事务地址各rowid的维护信息的连接列表。ITL包含多个事务的事务槽
或标识。当块里的某一行第一次被锁,事务会在其中一个事务槽内标识此行已
被锁定,其它事务所锁定这个块的其它行时,信息会存入到该块的其它的事务槽中。
录事务回滚或提交后,锁被释放,事务槽也会被重新使用,因些这个队列是块级别的。
表的事务槽的数量是由表的参数MAXTRANS决定的。ITL不能创建更多的自由事务槽或
MAXTRANS值已经接近,此时就会产生“equeue"的等待事件。
 
 
 
阅读(1038) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~