2008年(239)
分类:
2008-06-17 23:29:01
数据库系统使用锁来限制事务对数据的访问。任何事务在访问数据前,都要给数据加锁。事务能否被授予所申请的锁,与数据上是否存在锁以及锁的类型有关。
在数据库系统中,有以下两类比较常用的锁:
(1)共享锁(shared lock)
如果事务只是查询数据的内容,就可以申请共享锁。获得数据共享锁的事务,可以读取数据的内容,但不能更改。由于数据只是用作读取,因此一个数据上可以拥有多个共享锁,多个事务可以同时查询该数据的内容。
(2)排它锁(exclusive lock)
如果事务要更改数据的内容,就必须申请排它锁。获得数据排它锁的事务,可以更改数据的内容。任一时刻,一个数据上只能有一个排它锁,只允许一个事务更改数据的内容。
排它锁具有严格的使用限制,它和共享锁、其它的排它锁之间是互斥的。事务要成功地给数据加上排它锁,该数据上就不能存在共享锁、其它的排它锁;事务在获得数据上的排它锁之后,其它事务就不能再在数据上加共享锁、排它锁。
数据库系统不仅仅包含以上两种锁,在具体的实现时会根据需要创建多种锁。在下面一节中,我们会再讲述两种常用的锁:意向锁(intent lock)和更新锁(update lock)。