2008年(239)
分类: Oracle
2008-06-17 23:27:07
更改事务已经拥有锁的类型,称为锁的转换(lock conversion)。在任一时间,一个事务对一个数据只能拥有一个锁定。当事务已经拥有数据的锁定,而进一步的处理需要比已拥有锁定更严格的锁定时,系统将进行锁的转换,用新的锁定类型取代现有的锁定。例如:事务拥有数据的共享或者更新锁,在要修改数据时,就转换为排它锁。
在锁的转换时,共享锁和排它型意向锁之间的转换是一种特殊的情况。这两种锁中的任何一个都不比另一个有更多的限制,因此如果一个事务在某数据上拥有其中的一个锁,而又申请另一个锁,系统就转换为共享排它型意向锁。
当然,锁的转换能否成功,还要看数据上是否存在其它不兼容的锁。如上面的例子,如果数据上还存在其它的共享锁,就无法给数据加上排它锁,锁的转换就不会成功。
在数据库系统中,锁的转换由系统自动完成,用户无从干预。然而,了解不同SQL语句在处理时需要的锁定类型,有助于用户设计和调整应用程序。