MySQL学习笔记之锁

89 阅读1分钟

以下绝大部分内容都是从书籍或网上获取,先放说明

《MySQL是怎样运行的》

概念

image.png

image.png

image.png

image.png

一致性读与锁定读

一致性读

image.png

锁定读

共享锁与独占锁

image.png 既然是锁定读,那怎么表示是锁定后读取呢

加S锁的读取:select ... lock in share mode,可以S锁但不可以X锁

加X锁读取:select ... for update,都不允许其他事务获取选中记录的S锁,更别说X锁了

多粒度锁

image.png

image.png

image.png

行级锁

Record Locks

就是常用的把一条记录锁起来的行锁

Gap Locks

gap锁锁住的一条记录,不允许在记录前面加数据,注意是锁住哪一条记录,就不允许在哪一条前面加,后面没有限制,要限制就在后一条上加gap锁。最后一条的后面,注意到数据页开始和结束位置是有两条伪记录的。

image.png

Next-Key Locks

image.png

MySQL实现分布式锁

分布式锁用于多个服务器跑一套服务,但数据库是只有一个(是不是这样不太懂啊其实)。其他方式实现可能更好系统负担更轻,但就是有系统有系统洁癖,MySQL打天下。 cloud.tencent.com/developer/a… 等等