InnoDB 事务加锁分析
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/S7MhlsZveBHRSQhq5aTIJA 作者:何志创 一般大家对数据库事务的了解可能停留在事务的ACID特性以及事务4种不同的隔离级别层面上,而对于事务 4 种不同隔离级别如何实现了解相对较少。 本文以 MySQL 数据库 InnoDB 引擎为例,为大家分析 InnoDB数据库引擎对默认的隔离级别可重复读(RR)的具体实现。 整文知识点介绍:事务4种隔离级别、不同隔离级别解决的问题、MVCC、锁的类型、加锁案例分析;阅读完整文相信大家对事务隔离级别的具体实现有了一定的认识。 一、事务的隔离级别 1、4 种隔离级别 (1)未提交读(Read uncommitted): 一个事务读取到其他事务未提交的数据,是级别最低的隔离机制; (2)提交读(Read committed): 一个事务读取到其他事务提交后的数据; (3)可重复读(Repeatable read): 一个事务对同一份数据读取到的相同,不在乎其他事务对数据的修改; (4)序列化(Serializable) : 事务串行化执行,隔离级别最高,牺牲了系统的并发性。 2、不同隔离级别解决的问题 若不考虑事务的隔离级别,则事务的并发会造成以下问题: (1)脏读: 事务A读取了事务B更新的数据,然后B回滚操作