当前位置:网站首页>MySQL的隔离级别、可能出现的问题(脏读、不可重复读、幻读)及其解决方法
MySQL的隔离级别、可能出现的问题(脏读、不可重复读、幻读)及其解决方法
2022-07-28 22:46:00 【lonelyMangoo】
总结了MySQL的隔离级别、可能出现的问题和解决方法。
| 隔离级别 | 概念 | 实现方式 | 出现的问题 | 现象 | 举例说明 | 解决方法 |
|---|---|---|---|---|---|---|
| 读未提交 | 一个事务还没提交时,它做的变更就能被别的事务看到 | 直接返回最新值 | 脏读 | 读取到了其他事务未提交或者回滚的数据 | A事务读取到了B未提交的数据 | 隔离级别设置为读已提交 |
| 读已提交 | 一个事务提交之后,它做的变更才会被其他事务看到 | SQL语句执行的时候创建视图 | 不可重复读 | 在一次事务中读到的数据不一样(这期间别的事务提交了) | A事务两次相同的查询语句,结果却不一样。 | 隔离级别设置为可重复读 |
| 可重复读(默认) | 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。 | 事务启动时创建一个视图,整个事务期间都使用这个视图。 | 幻读 | 一个事务按相同条件检索,发现了新的数据(发现不了修改了的数据) | A事务把表中某个字段+1,恰巧这时候事务B向该表中表中插入了一条数据。A用户提交事务之后发现还有数据未修改,好像产生了幻觉。 | 隔离级别设置成串行化(效率差),不建议。||增加范围锁RangeS,锁定检索范围为只读 |
| 串行化 | 顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。 | 加锁 |
高隔离级别的问题在低隔离级别都会出现,为了表格简洁没有在表中体现
几个小概念:
- 隔离级别也是为了完成ACID中的I(Isolation),即隔离型
- MVCC(多版本并发控制)帮助完成了隔离性的实现
- MySQL原生的MyISAM引擎不支持事务,被InnoDB取代
部分参考MySQL45讲
边栏推荐
- Where is sandbox's confidence in rejecting meta's acquisition of meta universe leader sand?
- MySQL 分库分表及其平滑扩容方案
- IMG tags prohibit dragging pictures
- The download file of native JS implementation can be used anywhere
- MySQL的存储过程
- Alibaba Code代码索引技术实践:为Code Review提供本地IDE的阅读体验
- Applet verification code login
- Dynamic programming problem (4)
- Calculate properties and listeners
- Event extraction and documentation (2008-2017)
猜你喜欢

Upload Excel files with El upload and download the returned files

Install mysql5.7 under Linux, super detailed complete tutorial, and cloud MySQL connection

Alibaba code index technology practice: provide reading experience of local IDE for code review

Event extraction and documentation (2008-2017)

动态规划问题(六)

Laravel8 middleware realizes simple permission control

动态规划问题(八)

Longest ascending subsequence

Geth installation

【开发教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解
随机推荐
乱打日志的男孩运气怎么样我不知道,加班肯定很多!
Brief introduction to compressed sensing
Solutions such as failed plug-in installation and slow speed of linking remote server under vscode
PTA (daily question) 7-75 how many people in a school
DCAT in laravel_ Admin preliminary use record
vscode下链接远程服务器安装插件失败、速度慢等解决方法
1331. 数组序号转换 : 简单模拟题
What are the skills of API interface optimization?
pnpm的安装与使用
动态规划问题(三)
NFTScan 与 NFTPlay 在 NFT 数据领域达成战略合作
【MySQL 8】Generated Invisible Primary Keys(GIPK)
NPM run serve stuck at 40%
execute immediate 简单示例合集(DML)
12个MySQL慢查询的原因分析
Event extraction and documentation (2008-2017)
Newscenter, advanced area of attack and defense world web masters
How to solve Oracle not available
vulnhub:SolidState
Advanced area of attack and defense world web masters -baby Web