MySQL中的事物

简介: MySQL中的事物

一、背景

10年前,银行转账的时候还会有一些bug,比如,你转账给某人,你钱已经转出去了,但是那个人却没收到钱,你的钱却是真的减少了,那么对于这种情况我们应对的方案是什么呢?

因此,我们不想让这两个操作单独执行,我们想把转账出去操作和收钱操作合并到一起,再一起执行这两操作,当前面转账出去后,收账的操作出现问题了,我们就要进行回滚操作,把转账那一操作回滚到还没转账时的情况。

因此,大佬们引出了事物这个概念,用事物把多个操作打包在一起。


二、事物的概念

概念:

事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。

在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务。

回滚:

当事物中某一个操作失败后,数据库是咋知道之前的数据呢?数据库是没有" Ctrl + Z "的。

数据库对于事物来说,使用特殊的机制undo log + redo log这两个是通过日志,println写到文件记录之前的数据的操作。

当数据库中间挂了,但是日志已经记录下来了,等到数据库重启之后,读取之前的日志,看看是否有这种执行一半的事物,如果有就会进行回滚操作,回到执行这个事物之前的操作。

优缺点:事物虽然让数据更靠谱了,但是执行效率也变低了。


三、事物的特性

1、原子性

通过事物,把多个操作打包到一起。(初心)

2、一致性

相当于原子性的延伸,当数据库中间出现问题,如“钱凭空消失”这种情况不会发生

另一方面,还可以通过约束,避免数据出现一些非法的情况

3、持久性

事物任何的修改,都是持久化存在的(写入硬盘的),无论是重启程序,还是重启主机,修改都不会丢失(数据库本身就是为了持久化存储)

4、隔离性

多个事物并发执行的时候,可能会带来一些问题,可以用过隔离性来对这里的问题进行权衡,看你是希望数据更准确,还是速度更快。


四、并发执行的三个典型bug

1、脏读

概念:有两个事物,事物1和事物2,事物1修改了某个数据,但是数据还没“提交”(“提交”的意思就是告诉服务器完毕,over的意思),事物2读取了同一个数据,事物2读的数据,可能就是脏的数据,因为事物1还没修改完,事物2就读了。

解决方案:给写加锁,即写的时候不能读,写完才能读。

2、不可重复读

概念:有两个事物,事物1修改数据,事物2读取数据(可能会多次读取数据),基于脏读,给写加锁后,事物2项读数据,只能等事物1修改完后才能读,但是这时有个事物3,也是修改同一个数据,那么修改了后,事物2在读的过程中,在执行事物3之前和之后,读取的两个数据不同。(如果读不同事物得到的数据不同,是符合逻辑的,但同一数据读到的结果不同,那就难受了)

解决方案:给读加锁,即读的时候不能改,降低并发程度,数据的准确性也就提高了

3、幻读

概念:基于脏读和不可重复读,给写加锁,也给读加锁了,现有2个事物(多次执行),事物1修改数据,修改完后,事物2读取同一个数据,但此时有个事物3,他不去修改前面的同一个数据,但是在同一张表里,他新增了一个数据,这就会导致新增前事物2读取的“结果集”和新增事物2后读取的“结果集不同”(结果集:查询的时候,有多少行)。

解决方案:串行化,不在进行任何并发了,每个事物都是串行执行(执行完第一个,再执行第二个,再执行第三个)。


五、MySQL的隔离级别

1、read uncommitted 读未提交

并行程度最高,隔离程度最低,效率最高,数据是最不靠谱的

可能会出现:脏读+不可重复读+幻读

2、read committed 读已提交

相当于给写操作加锁,并行程度降低了,隔离程度提高了,效率降低了,数据靠谱一些

可能会出现:不可重复读+幻读

3、repeatable read 可重复读

相当于给读操作和写操作都加锁了,并行程度降低了,隔离程度提高了,效率降低了,数据又更靠谱了。

可能会出现:幻读。

4、serializable 串行化

让所有事物都串行执行,并行程度最低,隔离程度最高,效率最低,数据最靠谱


都看到这了,点个赞再走吧

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1108 0
|
12天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3705 4
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
24天前
|
人工智能 缓存 前端开发
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
DeepSeek Harness + DeepSeek V4 Pro 项目实战保姆级教程!手把手带你从零安装开源 AI 编程工具,开发架构图、知识讲解网站、3D 网页游戏、全栈 AI 应用 4 个项目,覆盖运行模式选择、插件安装与开发,看看能不能对标 Claude。
13504 93
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
|
17天前
|
Web App开发 人工智能 API
16 个超火的 DeepSeek Harness 插件,大肥鱼已经落后 N 个版本了。。。
DeepSeek Harness 精选插件推荐合集,从图片识别、浏览器操控、多 Agent 协作到手机远程控制,一口气带你看完 DSH 社区热门的十几个插件,覆盖技能扩展、UI 界面增强、整活玩法三大类,让你的鲸鱼变得更强。
1974 5
|
3天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
987 0
|
13天前
|
人工智能 Linux iOS开发
Ollama使用教程:Ollama官网下载、Ollama本地部署大模型(2026最新)
Ollama 是一款免费开源的本地大模型运行工具,支持在 Windows/macOS/Linux 上离线运行 Qwen、DeepSeek、Llama 等主流开源模型,数据不出本机、隐私安全。提供 OpenAI 兼容 API,命令行一键拉取/运行/管理模型,无需联网,无调用限制,是开发者与 AI 爱好者部署本地 AI 助手的理想选择。(239 字)
|
9天前
|
人工智能 并行计算 数据可视化
秋叶ComfyUI-AKI最新整合包|完整部署教程+核心指令手册
秋叶ComfyUI-AKI一键整合包,国内适配最优、稳定性最强的商用/学习级版本:全封装虚拟环境、预装90%常用节点、内置绘世启动器与成熟工作流,免配置、零依赖、解压即用,完美兼顾新手入门与专业批量生产需求。(239字)
|
10天前
|
人工智能 监控 测试技术
Qwen3.8-Flash 来了,100万上下文、Agent、Coding 都加强了
8月26日,通义千问发布Qwen3.8-Flash-Next:125B参数、每Token仅激活6B,原生支持26万Token、可扩展至100万上下文;Coding、Agent与工具调用能力显著增强,面向真实软件工程任务,推动大模型从“回答问题”迈向“完成工作”。