并发事务如果对数据读写时不加以控制,会破坏事务的隔离性和一致性。为了保持事务的隔离性,系统必须对事务之间的相互作用加以控制,最典型的方式是要求对数据对象以互斥的方式进行访问,即当一个事务访问某个数据对象时,其他事务都不能更新该数据对象。最常用的控制的手段就是加锁,该方法是只允许事务访问当前持有锁的数据项。
锁名 | 简称 | ||
1 | 共享锁(Share Locks, S锁) | 读锁 | 用于对数据进行读操作时进行锁定。 事务T对数据D加上了S锁后, 事务T:只能读不能修改数据D 其他事务:可以再对数据D加S锁来读取,不能加X锁修改 |
2 | 排它锁(Exclusive Locks, X锁) | 写锁 | 用于对数据进行写操作时进行锁定。 事务T对数据D加上X锁后 事务T:可以读取和修改数据D 其他事务:不能读和修改数据D。在事务T释放X锁前,对数据D不能再加任何锁, |