Chinaunix首页 | 论坛 | 博客
  • 博客访问: 432875
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: Oracle

2008-06-17 23:27:46

锁的授予

当一个事务申请对某一数据加某一类型的锁时,如果该数据上不存在相冲突的锁(由其它事务所加)时,则锁被授予该事务。

在锁的授予时,要防止有些事务总是不能获得所需要的锁,以至于事务永远无法执行。例如:事务A要对数据加排它锁,如果数据上已经存在共享锁,则事务A等待。这时,事务B也需要在该数据上放置共享锁,由于共享锁互相兼容,事务B就获得该数据。如果随后连续有很多事务都在该数据上加共享锁,每一事务都只是运行一小段时间。这样,由于数据上总是存在共享锁,事务A就一直无法执行。

数据库系统必须要采取相关措施,避免这种情况的发生。一种可行的解决办法是,事务在申请对数据加锁时,数据库系统会进行条件检查。只有以下两个条件都满足之后,锁才会被授予:

1)数据上不存在与所申请锁相冲突的锁。

2)不存在给数据加锁而等待的事务。

阅读(401) | 评论(0) | 转发(0) |
0

上一篇:6.3.4 锁的转换

下一篇:6.3.2 锁的粒度

给主人留下些什么吧!~~