MySQL 加锁处理分析
http://hedengcheng.com/?p=771 类似的文章:https://www.cnblogs.com/yelbosh/p/5813865.html 1.解释了为什么update insert delete 也属于当前读 2.分9种情况解释了rc rr级别下,当前读在mysql中是如何加锁的 2.1 select no update or share mode 操作在非seariable下均不加锁,采用的是快照读,mysql使用mvcc返回历史数据 2.2 对于当前读,分情况讨论 背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的一个死锁场景,了解死锁产生的原因。 注: MySQL是一个支持插件式存储引擎的数据库系统。本文下面的所有介绍,都是基于InnoDB存储引擎,其他引擎的表现,会有较大的区别。 MVCC:Snapshot Read vs Current Read MySQL InnoDB存储引擎