以下绝大部分内容都是从书籍或网上获取,先放说明
《MySQL是怎样运行的》
概念
一致性读与锁定读
一致性读
锁定读
共享锁与独占锁
既然是锁定读,那怎么表示是锁定后读取呢
加S锁的读取:select ... lock in share mode,可以S锁但不可以X锁
加X锁读取:select ... for update,都不允许其他事务获取选中记录的S锁,更别说X锁了
多粒度锁
行级锁
Record Locks
就是常用的把一条记录锁起来的行锁
Gap Locks
gap锁锁住的一条记录,不允许在记录前面加数据,注意是锁住哪一条记录,就不允许在哪一条前面加,后面没有限制,要限制就在后一条上加gap锁。最后一条的后面,注意到数据页开始和结束位置是有两条伪记录的。
Next-Key Locks
MySQL实现分布式锁
分布式锁用于多个服务器跑一套服务,但数据库是只有一个(是不是这样不太懂啊其实)。其他方式实现可能更好系统负担更轻,但就是有系统有系统洁癖,MySQL打天下。 cloud.tencent.com/developer/a… 等等