MySQL的隔离级别、可能出现的问题(脏读、不可重复读、幻读)及其解决方法
2022/9/16 2:19:45
本文主要是介绍MySQL的隔离级别、可能出现的问题(脏读、不可重复读、幻读)及其解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL的隔离级别、可能出现的问题和解决方法。
隔离级别 | 概念 | 实现方式 | 出现的问题 | 现象 | 举例说明 | 解决方法 |
---|---|---|---|---|---|---|
读未提交 | 一个事务还没提交时,它做的变更就能被别的事务看到 | 直接返回最新值 | 脏读 | 读取到了其他事务未提交或者回滚的数据 | A事务读取到了B未提交的数据 | 隔离级别设置为读已提交 |
读已提交 | 一个事务提交之后,它做的变更才会被其他事务看到 | SQL语句执行的时候创建视图 | 不可重复读 | 在一次事务中读到的数据不一样(这期间别的事务提交了) | A事务两次相同的查询语句,结果却不一样。 | 隔离级别设置为可重复读 |
可重复读(默认) | 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。 | 事务启动时创建一个视图,整个事务期间都使用这个视图。 | 幻读 | 一个事务按相同条件检索,发现了新的数据(发现不了修改了的数据) | A事务把表中某个字段+1,恰巧这时候事务B向该表中表中插入了一条数据。A用户提交事务之后发现还有数据未修改,好像产生了幻觉。 | 隔离级别设置成串行化(效率差),不建议。||增加范围锁RangeS,锁定检索范围为只读 |
串行化 | 顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。 | 加锁 |
这篇关于MySQL的隔离级别、可能出现的问题(脏读、不可重复读、幻读)及其解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7
- 2024-02-18从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践
- 2024-02-07mysql 外键索引入门介绍,为什么工作中很少有人使用?