共享锁和排它锁的理解

Posted 技术无产者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了共享锁和排它锁的理解相关的知识,希望对你有一定的参考价值。

     基本的封锁类型有两种:

       排它锁(X锁)和共享锁(S锁).所谓X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据A,...所谓S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁 若事务T对数据对象A加了S锁,则T就可以对A进行读取,但不能进行更新(S锁因此又称为读锁),在T释放A上的S锁以前,其他事务可以再对A加S锁,但不能加X锁,从而可以读取A,但不能更新A. 若事务T1对数据A加了排他锁,但是事务T2只想读数据A而不修改数据A,事务T2是可以读得到数据A的。要是想要修改数据A就必须得等T1结束后释放X锁,事务T2才能对数据A进行修改。

      当两个事务同时对同一行数据update/delete时,后一个事务执行update/delete时后不会往下运行,会等上一个事务提 交/回滚后才往下执行,这 是四个级别都会出现的问 题,因为当一个事务修改 了,但没有提交,另一个 事务接着对这行数据修改 ,万一上个事务没有提交 而是回退就影响了事务的 一致性这种update的影响不属于幻读不可重复读和脏读(出现这样的情况是因为行排它锁,当一个事务对一行数据增删改后会自动为该行数据加排他锁,那么其它事只可以读该条数据,不能删和改)

以上是关于共享锁和排它锁的理解的主要内容,如果未能解决你的问题,请参考以下文章

共享锁和排它锁的理解

MySql共享锁和排它锁

Mysql 锁机制和事务

Mysql的锁(S锁和X锁的区别)

锁定机制和数据并发管理(笔记)

数据库的事物隔离级别以及锁的一些个人理解