mysql-14 并发控制

mysql-14 并发控制

概念引入

1、并发控制

  事务是并发控制的基本单位,并发操作可能会带来数据不一致性,包括丢失修改、不可重复读和读脏数据三种。

如上图三例中:

1)丢失修改:T2提交的结果破坏了T1提交的结果;

2)不可重复读:T1为了校对,重新读取B值,却与之前读取的不一致;

3)读脏数据:T2读的数据是即将需要被T1回滚的数据;即T2读取到的是T1撤销掉的操作里的数据,即脏数据。

2、封锁

1)共享锁(S锁,读锁)

2)排它锁(X锁,写锁)

3)一级封锁协议:事务T在修改数据R之前必须对其加X锁,知道事务结束(提交或回滚)才释放;

4)二级封锁协议:在一级封锁协议的基础上,增加事务T在读取数据R之前必须先对其加S锁,读完即可释放S锁;

4)三级封锁协议:在一级封锁协议的基础上,增加事务T在读取数据R之前必须先对其加S锁,事务结束才释放;

3、活锁和死锁

1)活锁:T1先封锁数据R,然后T2、T3、T4……申请封锁R,可是T1释放R之后,系统批准了T3,T2只能等待;之后给了T4、T5、T6……,造成T2有可能永远等待,这就是活锁;

2)死锁:T1,T2均需要数据(X,Y),T1先封锁了X,而T2先封锁了Y;然后T1等待T2释放Y,同时T2等待T1释放X,造成两个事务永远也不能结束,形成死锁。

欢迎打赏,谢谢
------ 本文结束------
0%