悲观锁经常被问到,比如数据库悲观锁有哪些等,下面我来详解悲观锁@mikechen
MySQL悲观锁

悲观锁(Pessimistic Locking)是一种并发控制策略,适用于对数据冲突敏感的场景。
采用悲观锁的系统默认认为并发操作会产生冲突,因此在读或写操作时主动对数据加锁以防止其他事务并发修改。
直到当前事务完成后才释放锁,从而保证数据一致性和隔离性。
悲观锁的实现
在MySQL中,悲观锁主要通过关系型存储引擎提供的行级锁、或表级锁实现。

常见实现途径包括:
SELECT … FOR UPDATE:在事务中对查询到的行加排他锁(exclusive lock)。
比如:
开启事务:BEGIN;
查询并加锁:SELECT * FROM table WHERE id = 1 FOR UPDATE;
此时,其他事务如果也执行 FOR UPDATE 或者 UPDATE/DELETE 操作,会被阻塞,直到当前事务提交(COMMIT)或回滚(ROLLBACK)。
处理业务逻辑。
提交事务。
SELECT … LOCK IN SHARE MODE(较旧用法,支持共享锁)。
允许其他事务读取但阻止写入,适用于需要读取且不希望数据被修改的场景。
显式的LOCK TABLES/UNLOCK TABLES:对整张表加表级锁。
适用于不需要细粒度锁定的场景,但并发性能较差。
mikechen睿哥
10年+大厂架构经验,大厂面试官,就职于阿里、淘宝等一线大厂,操盘多个亿级数据量大厂核心项目。