并发控制概述
并发操作带来的数据不一致的三种情况
丢失修改
不可重复读
脏读
封锁
封锁的类型
排他锁(X锁,Exclusive Lock)
事务T对数据对象加X锁后,只能读写,其他事务无法加锁,无法读写。
共享锁(S锁,Shared Lock)
事务T对数据对象加S锁,T可读不可写,其他事务可以对R加S锁,但不可以加X锁。这保证了事务S释放S锁之前,其他事务只可以读R,但是不能修改。
三级封锁协议
一级封锁协议
修改X之前先对其加X锁,直到事务结束后才释放。
一级封锁协议可以防止丢失修改。
二级封锁协议
一级封锁协议+读之前先加S锁读后释放
防止丢失数据和脏读
三级封锁协议
一级封锁协议+事务读数据之前加锁,直到事务结束释放。
防止丢失修改、脏读、不可重复读