MySQL 的共享锁和排他锁都属于悲观锁(参考:乐观锁和悲观锁).net
共享锁又称读锁,简称 S 锁,多个事务能够同时为同一数据加共享锁。数据被添加共享锁后能够被多个事务同时读取,可是没法被修改。code
MySQL 共享锁实现:blog
SELECT ... LOCK IN SHARE MODE
排他锁又称写锁,简称 X 锁,排他锁不能与其它锁共存,一旦一个事务获取了某一数据的排他锁,则其它任何事务都没法再获取该数据的其它锁,包括共享锁和排他锁。只有获取到排他锁的事务自己能够对该数据执行读取和修改操做。事务
MySQL 排他锁实现:get
SELECT ... FOR UPDATE
MySQL InnoDB 存储引擎会自动为 INSERT
、UPDATE
、DELETE
操做涉及的数据添加排他锁,SELECT
默认不添加任何锁。数据