网站后台改,wordpress答题跳转,低价网站建设哪家便宜,四川省的建设厅注册中心网站简介
Multi-Version Concurrency Control 多版本并发控制#xff0c;MVCC 是一种并发控制的方法#xff0c;一般在数据库管理系统中#xff0c;实现对数据库的并发访问#xff1b;在编程语言中实现事务内存。 *往期知识不做重点 事务具有4个特征,分别是原子性、一致性、隔…简介
Multi-Version Concurrency Control 多版本并发控制MVCC 是一种并发控制的方法一般在数据库管理系统中实现对数据库的并发访问在编程语言中实现事务内存。 *往期知识不做重点 事务具有4个特征,分别是原子性、一致性、隔离性和持久性。 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。
引入
例题在隔离级别为不可重复读、可重复读分别输出什么 1、RR级别张三 张小三 2、RC级别张三 张三
RR-RC Innodb做的事情
MySQL底层用链的方式存着版本链
两个重要名词
快照读select * from xxx ,普通的sql语句 当前读select * form xxx for update; delete ; insert into ; update
快照读下使用MVCC——解决不可重复读
undo log 版本链 Read View 可见性规则 RR 隔离级别实现原理就是 MVCC 多版本并发控制而 MVCC 是通过 ReadView Undo Log 实现的Undo Log 保存了历史快照Read View 可见性规则帮助判断当 前版本的数据是否可见。 Undo Log 版本链长这样 不可重复读就是最上面图中两次事务D的select语句每次获取新的readView 可重复读就是最上面图两次事务D的select语句取相同的readView
当前读下使用间隙锁(或next-key-lock——解决幻读问题
针对于索引区间的查询或者修改Mysql 会自动对索引间隙加锁来解决幻读问题。 1、执行语句 SELECT * FROM user WHERE id 3 AND id7 FOR UPDATE; 2、假设B Tree 的索引结构这个结构中有四个索引元素分别是1、3、7、10 加了间隙锁后(3,7)insert into xxx values (5,name)这个时候就无法插入了要等上面的事务提交以后方能插入 3、当区间变为where id3那升级为next-key-lock索引区间为-∞1],1,3],37],7,10],10∞] 所以用到了37],7,10],10∞]