MySQL 共享锁和排他锁

MySQL 共享锁和排他锁

MySQL 的共享锁和排他锁都属于悲观锁(参考:乐观锁和悲观锁

共享锁

共享锁又称读锁,简称 S 锁,多个事务可以同时为同一数据加共享锁。数据被添加共享锁后可以被多个事务同时读取,但是无法被修改。

MySQL 共享锁实现:

SELECT ... LOCK IN SHARE MODE

排他锁

排他锁又称写锁,简称 X 锁,排他锁不能与其它锁共存,一旦一个事务获取了某一数据的排他锁,则其它任何事务都无法再获取该数据的其它锁,包括共享锁和排他锁。只有获取到排他锁的事务本身可以对该数据执行读取和修改操作。

MySQL 排他锁实现:

SELECT ... FOR UPDATE

MySQL InnoDB 存储引擎会自动为 INSERTUPDATEDELETE 操作涉及的数据添加排他锁,SELECT 默认不添加任何锁。

猜你喜欢

转载自my.oschina.net/u/3190679/blog/2209023