栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL的隔离级别、可能出现的问题(脏读、不可重复读、幻读)及其解决方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL的隔离级别、可能出现的问题(脏读、不可重复读、幻读)及其解决方法

总结了MySQL的隔离级别、可能出现的问题和解决方法。

隔离级别概念实现方式出现的问题现象举例说明解决方法
读未提交一个事务还没提交时,它做的变更就能被别的事务看到直接返回最新值脏读读取到了其他事务未提交或者回滚的数据A事务读取到了B未提交的数据隔离级别设置为读已提交
读已提交一个事务提交之后,它做的变更才会被其他事务看到SQL语句执行的时候创建视图不可重复读在一次事务中读到的数据不一样(这期间别的事务提交了)A事务两次相同的查询语句,结果却不一样。隔离级别设置为可重复读
可重复读(默认)一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。事务启动时创建一个视图,整个事务期间都使用这个视图。幻读一个事务按相同条件检索,发现了新的数据(发现不了修改了的数据)A事务把表中某个字段+1,恰巧这时候事务B向该表中表中插入了一条数据。A用户提交事务之后发现还有数据未修改,好像产生了幻觉。隔离级别设置成串行化(效率差),不建议。||增加范围锁RangeS,锁定检索范围为只读
串行化顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。加锁

高隔离级别的问题在低隔离级别都会出现,为了表格简洁没有在表中体现

几个小概念:

  1. 隔离级别也是为了完成ACID中的I(Isolation),即隔离型
  2. MVCC(多版本并发控制)帮助完成了隔离性的实现
  3. MySQL原生的MyISAM引擎不支持事务,被InnoDB取代

部分参考MySQL45讲

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号