封锁是实现并发控制的一个非常重要的技术。
所谓封锁就是事务t在对某个数据对象例如表,记录等操作之前,先向系统发出请求,对其加锁🔒。加锁后事务t就对该数据对象有了一定的控制,在事务t释放它的锁之前,其他事务不能更新此数据对象。
确切的控制由封锁的类型决定。基本的封锁类型有二种:排他锁(x锁),共享锁(s锁)。
排他锁又称为写锁。若事务t对数据对象a加上x锁,则只允许t读取和修改a,其他任何事务都不能再对a加任何类型的锁,直到t释放a的锁为止,这就保证了其他事务在t释放a上的锁之前不能再读取和修改a。
共享锁又称读锁。若事务t对数据对象a加上了s锁,则事务t可以读a但不能修改a,其他事务只能再对a加s锁,而不能加s锁,直到t释放a上的s锁为止,这就保证了其他事务可以读a,但在t释放a上的s锁之前不能对a做任何操作。