微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

MysqL的隔离级别、可能出现的问题和解决方法

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐