MySQL 事务与锁机制详解
ACID 到底是什么意思,隔离级别和锁又是怎么回事。
事务是数据库保证数据一致性的基石。理解事务和锁,才能写出不丢数据、不锁死的代码。
ACID 四特性
- 原子性:要么全做,要么全不做
- 一致性:数据始终满足约束
- 隔离性:并发事务互不干扰
- 持久性:提交后不丢失
隔离级别
MySQL 默认是可重复读(REPEATABLE READ),能避免脏读和不可重复读,但要注意幻读。
锁的类型
行锁、表锁、间隙锁,不同场景用的锁不同。SELECT 默认不加锁,UPDATE 会加行锁。
实用建议
- 事务尽量短,别把耗时操作放事务里
- 避免长事务导致锁等待
- 死锁时优先保证业务可重试