MySQL
文章平均质量分 82
我不想熬夜学Java
这个作者很懒,什么都没留下…
展开
-
面试官:MySQL的幻读是怎么被解决的?
我之前写过一篇数据库事务的文章「 [事务、事务隔离级别和MVCC],这篇我说过什么是幻读。 在这里插入图片描述 然后前几天有位读者跟我说,我这个幻读例子不是已经被「可重复读」隔离级别解决了吗?为什么还要有 next-key 呢? 他有这个质疑,是因为他做了这个实验。 实验的数据库表 t_stu 如下,其中 id 为主键。 然后在可重复读隔离级别下,有两个事务的执行顺序如下: 从这个实验结果可以看到,即使事务 B 中途插入了一条记录,事务 A 前后两次查询的结果集都是一样的,并没有出现所谓的幻读原创 2021-09-18 15:51:52 · 98 阅读 · 0 评论 -
MySQL 到底是如何做到多版本并发的?
多版本并发控制 我们知道,读未提交会造成脏读、幻读、不可重复读,读已提交会造成幻读、不可重复读,可重复读可能会有幻读,和串行化就不会有这些问题。 那 InnoDB 到底是怎么解决这些问题的呢?又或者,你有没有想过造成脏读、幻读、不可重复读的底层最根本的原因是什么呢? 这就是今天要聊的主角——MVCC(Multi-Version Concurrent Controll),也叫多版本并发控制。InnoDB 是一个支持多事务并发的存储引擎,它能让数据库中的读-写操作能够并发的进行,避免由于加锁原创 2021-08-02 15:26:12 · 108 阅读 · 0 评论