![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 65
xiaobin0521
这个作者很懒,什么都没留下…
展开
-
MVCC原理解析
MVCC ACID 首先,介绍一下数据库ACID四种特性 原子性:通过undo log实现,事务执行要么全部成功,要么全部失败 一致性: 通过原子性+隔离性+持久性配合实现 隔离性:通过锁+MVCC(多版本并发控制实现) 持久性:通过redo log实现 事务隔离级别 事务四种隔离级别以及会带来的问题 读未提交:脏读,不可重复读,幻读 读已提交:不可重复读,幻读 可重复度:幻读 串行化:无 其中读未提交没有做任何控制,而串行化则是事务串行执行,会导致数据库性能低,而读已提交和可重复度都是基于锁+mv原创 2021-03-18 16:24:09 · 179 阅读 · 0 评论 -
幻读以及幻读的解决方案
幻读场景 事务A 事务B 事务A按照特定的条件查询数据,查询到了2条数据 事务B插入一条数据 commit 事务A按照原条件查询数据,查询到还是2条数据 事务A修改其中一条数据的值update,看到修改的范围是3条数据 事务A按照原条件查询数据,查询到3条数据 为什么出现幻读:主要原因是快照读和当前读混合使用 首先事务A执行了3次读取操作 第一次和第二次操作都是执行的快照读,如果是可重复读的隔离级别下。这两次读取的数据是一致的。 而 for upd原创 2021-03-18 16:06:43 · 725 阅读 · 0 评论