每日一博 | 想掌握数据库事务背后的并发原理,请看这 15 张图
摘要:通过一个转账问题的场景,将数据库9种锁、3种读、4种隔离级别一次性串联起。 本文分享自华为云社区《将数据库9种锁、3种读、4种隔离级别一次性串联起来,用15张图呈现背后数据库事务背后的并发原理》,作者: breakDawn。 前段时间开发时,正好遇到了2个进程同时更新一行记录时引发的bug,虽然问题最终解决了,但自己对背后的运行逻辑仍旧一头雾水。事后尝试简单翻了下各种博客资料,还有《高性能mysql》那本书时,发现大部分是将一堆八股文概念堆砌在一起,很少完整串联过这堆概念。 于是我重新完整学习了这些概念和底层原理, 通过一个转账问题的场景,将这些概念全部关联起来。 将下面这些数据库的概念单独拿出来时,相信很多人都有了解或者记忆过,但是将这些概念全部串联在一起时,可能就会很混乱。 我这里举个例子: 排他锁、共享锁 行锁、表锁、意向锁、间隙锁、next-key锁 悲观锁、乐观锁 两阶段锁协议 LCBB锁并发控制协议、MVCC多版本控制协议 脏读、不可重复读、幻读 RU\RC\RR\SE隔离级别 然后自己问自己一个问题: 这一堆锁的关联关系究竟是什么? 各隔离级别究竟是怎么用各种锁+M...



