最近,在一次 mysql 死锁的生产事故中,我发现,关于 mysql 的锁.事务等等,我所知道的东西太碎了,所以,我试着用几个例子将它们串起来.具体做法就是通过不断地问问题.回答问题,再加上"适当"的比喻,来逐步构建脑子里的"知识树". 需要提醒一下,这篇博客并不适合小白,因为你需要先了解排它锁.共享锁.事务,最重要的是你需要知道事务中的锁是什么时候加上.什么时候打开的.而这篇博客更多的是希望把这些碎片化的知识给连接起来. 项目环境 mysql 版本:5.7.28-
1. 打开数据库 已提交读快照 选项 2. 数据库 已提交读快照 模式下的测试 a) 测试表 Test b) 开启事务1,更新数据C2 = '200'(未提交) BEGIN TRAN ' WHERE C1 = 'A' -- COMMIT c) 查询数据(查询没有被阻塞,C2 = '100') SELECT * FROM Test d) 开启事务2,更新数据C2 = '300'(未提交),更新操作被阻塞(等待事务1提交) BEGIN TRAN ' WHERE C1 = 'A' -- COMMIT