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

2008年(239)

我的朋友

分类: Oracle

2008-06-17 23:27:07

锁的转换

更改事务已经拥有锁的类型,称为锁的转换(lock conversion)。在任一时间,一个事务对一个数据只能拥有一个锁定。当事务已经拥有数据的锁定,而进一步的处理需要比已拥有锁定更严格的锁定时,系统将进行锁的转换,用新的锁定类型取代现有的锁定。例如:事务拥有数据的共享或者更新锁,在要修改数据时,就转换为排它锁。

在锁的转换时,共享锁和排它型意向锁之间的转换是一种特殊的情况。这两种锁中的任何一个都不比另一个有更多的限制,因此如果一个事务在某数据上拥有其中的一个锁,而又申请另一个锁,系统就转换为共享排它型意向锁。

当然,锁的转换能否成功,还要看数据上是否存在其它不兼容的锁。如上面的例子,如果数据上还存在其它的共享锁,就无法给数据加上排它锁,锁的转换就不会成功。

在数据库系统中,锁的转换由系统自动完成,用户无从干预。然而,了解不同SQL语句在处理时需要的锁定类型,有助于用户设计和调整应用程序。

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

上一篇:6.3.5 锁的升级

下一篇:6.3.3 锁的授予

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