首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Mysql 脏读、不可重复读、幻读

Mysql 脏读、不可重复读、幻读

原创
作者头像
一杯茶Ja
发布于 2024-09-30 08:31:17
发布于 2024-09-30 08:31:17
3890
举报

在Mysql中常用的InndDB是支持并发事务的,也就是能够在同一时间允许多个事务对数据库进行操作,那么问题来了,如果一个事务在写数据,另一个事务要读数据会发生什么;如果一个事务在写数据,另一个事务也要写又会发生什么。具体来说,这就有可能产生脏读、不可重复读和幻读。

代码语言:txt
AI代码解释
复制
事务是逻辑上的一组操作,要么全部执行,要么全部不执行

脏读

一个事务读取到了另一个未提交事务修改的数据。这可能导致读取到的数据是无效或错误的,因为那个未提交的事务可能最终会回滚或修改。

例如,事务 A 修改了一条数据但未提交,此时事务 B 读取了这条被修改的数据。如果事务 A 回滚,那么事务 B 读取到的数据就是脏数据。

事务B读取了事务A修改后的数据,但事务A后面回滚,数据回到了修改前,此时事务B手里的数据还是之前的数据,也就是脏数据。

不可重复读

一个事务在执行过程中多次读取同一数据,但是每次读取的结果不一致。这是因为在这个事务执行期间,有其他事务修改了该数据并提交。

比如,事务 A 读取某条数据,事务 B 随后修改并提交了该数据,当事务 A 再次读取时得到了不同的结果。两次读取的结果不一致,因此称为不可重复读。

幻读

一个事务在执行过程中,按照相同的条件进行查询,两次得到的结果集行数不同。这通常是因为在事务执行期间,有其他事务插入或删除了满足条件的数据。

例如,事务 A 按照某个条件查询得到结果集,事务 B 插入了一些符合该条件的数据并提交,当事务 A 再次按照相同条件查询时,结果集的行数增多了,就好像出现了“幻影”的数据。

这里我们有个学生表,初始时有8条数据:

  1. 事务A在插入前先去看了下不存在主键为9的数据,符合正常逻辑。
  2. 事务B直接插入了一条主键为9的数据并提交了事务。
  3. 事务A再去插入发现插入失败,主键冲突,明明刚刚还检查了没有主键为9的,现在却冲突了,就好像出现了“幻影”。事务隔离级别为了解决上面问题,Mysql为我们提供了4种事务隔离级别来解决。隔离级别逐渐上升,性能逐渐下降。
  4. Read Uncommitted(读未提交):它是性能最好的,事务中的修改,即使没有提交,其他事务也可以看得到,会导致“脏读”、“幻读”和“不可重复读取”。
  5. READ COMMITTED(读已提交):允许读取并发事务已经提交的数据,不允许读取另一个并行事务已修改但未提交的数据,避免了“脏读”,但不能避免“幻读”和“不可重复读取”。
  6. REPEATABLE READ(重复读):保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。Mysql的默认隔离级别,避免了“脏读取”和“不可重复读取”的情况,但不能避免“幻读”。
  7. Serializable (串行化):一个事务处理的时候,其他事务都等着。读的时候加共享锁,也就是其他事务可以并发读,但是不能写。写的时候加排它锁,其他事务不能并发写也不能并发读。这样“脏读”、“不可重复读”、“幻读”都能避免了,但此隔离级别性能最低。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
NPS 内网穿透:原理、服务端与客户端搭建指南
大家好,我是星哥,之前介绍过ngrok、frp的内网穿透工具,今天来介绍一个NPS的开源内网穿透工具。
星哥玩云
2025/05/14
2.6K0
NPS 内网穿透:原理、服务端与客户端搭建指南
nps内网穿透实现外网访问树莓派
拿到树莓派除了研究了下 Android Things,还有就是搭建服务器,建个网站。操作系统使用官方的Raspbian,基于Linux。然后使用Nginx + PHP + WordPress建站。一切都比较顺利,中间过程以后写个文章记录一下。今天先说一下最重要的问题:如何通过内外穿透让外网访问到树莓派上的服务? 从网站建好以后,试过两种内网穿透方式,花生壳、NPS。其他的还有FRP、ngrok等
骤雨重山
2022/01/17
2K0
nps内网穿透实现外网访问树莓派
NPS的使用
NPS是一款好用的内网穿透工具,不过相比于FRP还是稍微比较麻烦一点,原因在于NPS的服务端需要安装。
谢公子
2022/01/20
9150
NPS的使用
内网映射神器nps搭建
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网ttp代理、内网socks5代理,并带有功能强大的web管理端。
逍遥子大表哥
2022/12/01
1.8K0
内网映射神器nps搭建
NPS的使用
NPS是一款好用的内网穿透工具,不过相比于FRP还是稍微比较麻烦一点,原因在于NPS的服务端需要安装。
安全小王子
2020/11/30
1.5K0
NPS的使用
使用NPS服务器内网穿透——实现远程访问外网电脑
使用NPS进行内网穿透——实现远程访问外部网络电脑 参考文档:https://ehang-io.github.io/nps/#/?id=nps 内网穿透搭建教程 NPS简介和实现原理 1、NPS简
宝耶需努力
2022/12/13
9.8K0
使用NPS服务器内网穿透——实现远程访问外网电脑
21.7K star!再见吧花生壳,没有公网ip,也能搞定所有网络访问!内网穿透神器NPS
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
小华同学ai
2025/05/09
5800
21.7K star!再见吧花生壳,没有公网ip,也能搞定所有网络访问!内网穿透神器NPS
支持可视化配置的全能内网穿透神器-NPS
在之前的文章中,我们介绍了两种内网穿透工具frp和zerotier。frp可参照《利用frp工具实现内网穿透、随时随地访问内网服务》,zerotier可参照《ZeroTier实现内网穿透、异地组网》。
大刚测试开发实战
2023/01/18
9.6K1
如何利用腾讯云实现内网穿透?
自带WEB管理的轻量级内网穿透工具NPS的各种搭建方式和使用教程,支持X86、ARM、MIPS平台。
zeruns
2022/03/23
27.8K8
NPS内网穿透的搭建与演示
内网穿透:内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。
yuanshuai
2022/08/22
4.6K1
NPS内网穿透的搭建与演示
内网隧道之nps
安装后windows配置文件位于 C:\Program Files\nps,linux和darwin位于/etc/nps
中龙技术
2022/09/29
1.2K0
内网隧道之nps
关于内网穿透:NPS神器
一款轻量级、高性能、功能强大的内网穿透反向代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等,此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
Khan安全团队
2020/10/10
6.4K2
关于内网穿透:NPS神器
利用CentOS7云主机搭建NPS内网穿透代理服务器
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端
yuanfan2012
2020/02/26
12.1K5
利用CentOS7云主机搭建NPS内网穿透代理服务器
NPS - 轻量级且高性能内网穿透工具
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
青阳
2021/09/08
2K0
常见内网穿透工具,收好了!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/04/18
1.5K0
常见内网穿透工具,收好了!
安排几款实用的内网穿透工具+教程
本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。
民工哥
2021/11/26
1.4K0
推荐几款实用的内网穿透工具
本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。
Java团长
2022/02/10
9.2K1
推荐几款实用的内网穿透工具
【内网安全】 隧道搭建&穿透上线&FRP&NPS&SPP&Ngrok&EW项目
需要实名人脸验证 收费 官网注册按照使用手册就可以实现内网穿透,认证需要手续费,提供免费隧道但是速度慢 https://www.ngrok.cc/ 支持的协议:tcp、http、https 支持的类型:正向代理、反向代理
没事就要多学习
2024/07/18
3140
【内网安全】 隧道搭建&穿透上线&FRP&NPS&SPP&Ngrok&EW项目
常见内网穿透工具,收好了!
目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……)。
网络工程师笔记
2023/09/09
1.6K0
常见内网穿透工具,收好了!
Centos7 安装NPS内网穿透教程
1、下载软件 wget https://github.com/ehang-io/nps/releases/download/v0.26.9/linux_amd64_server.tar.gz 2、解压软件 cd nps/ tar -zxvf linux_amd64_server.tar.gz 3、执行安装命令 对于linux|darwin sudo ./nps install 4、执行启动命令 对于linux|darwin sudo nps start 5、开放端口 8080、8024
学派客
2023/04/06
1.8K0
推荐阅读
相关推荐
NPS 内网穿透:原理、服务端与客户端搭建指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档