MySQL 锁

MySQL 锁

Posted by ZW on May 13, 2020

锁分类

加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。

全局锁(mysql server 实现)的典型使用场景是,做全库逻辑备份

表级锁(mysql server 实现)分两种,一种是表锁,一种是元数据锁(MDL)。

行级锁(innodb 引擎 实现)。

两阶段锁协议

在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放,而是要等到事务结束时才释放。这个就是两阶段锁协议。

如果你的事务中需要锁多个行,要把最可能造成锁冲突、最可能影响并发度的锁尽量往后放。

参考 丁奇 ·《MySQL实战45讲》

参考 《高性能MySQL》