数据库有关锁的问题

发布时间:2024年01月04日

排他锁(X锁,写锁)

事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务不能对A加任何类型的锁,直到T释放A上的锁。保证了T释放A上的锁之前,其他事务不能读取修改A。

Xlock A? ? ? ? //加锁

Unlock A? ? ? ? //释放

共享锁(S锁,读锁)

事务T对数据对象A加了S锁,则事务T可以读A,但不能修改A,其他事务也可以读A,但不能修改A,知道释放锁为止。

Slock A? ? ? ? //加锁

Unlock A? ? ? ? //释放

执行过程:1.串行执行? ? ? ? 2.并发执行(分为结果正确的(可串行化调度)和结果不正确的)?

如何判断调度是可串行化的调度?

满足冲突可串行化,一定是可串行化的调度(充分条件,不满足也可能是)

冲突操作是指不同事务对同一个数据的读写操作和写写操作

eq?R_%7Bi%7D%28X%29eq?W_%7Bj%7D%28X%29

eq?W_%7Bi%7D%28X%29eq?W_%7Bj%7D%28X%29

不同事务的冲突操作和同一事务的两个操作是不能交换的?

1181fa1b7a4f4768a4da731d9f3ffbdc.png

4157ac86246944f9a65f2fc2a1bfe26d.png

题目:分析并发调度是不是可串行化的调度

思路:串行只有两种顺序。

????????先执行T1后执行T2,得A=3,B=4;

????????先执行T2后执行T1,得B=4,A=5;

? ? ? ? 并发调度结果:B=4,A=3? ? ? ?

????????所以可串行化

c90c88471bea4e428b1f7473e719bd91.jpg

文章来源:https://blog.csdn.net/yesyesyes_yes/article/details/135349446
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。