【MySQL篇】事务的认识以及四大特性

发布时间:2026/8/31 4:12:39

【MySQL篇】事务的认识以及四大特性
何为事务-----*事务Transaction是指一组操作的集合这些操作要么全部执行成功要么全部不执行。事务通常用于保证数据库的一致性、完整性和可靠性确保数据的完整性与正确性。有效避免部分执行部分未执行而引起的问题**引入例子 **假设以下场景转账 第一步A用户转账给B用户100元 账户-100 – 从账户A扣款 UPDATE accounts SET balance balance - 100 WHERE account_id ‘A’; 第二步B用户收到A转账100元 账户100 – 向账户B存款 UPDATE accounts SET balance balance 100 WHERE account_id ‘B’; 此时如果第一步完成之后由于受到各种原因例网络波动主机关机MySQL服务器崩溃等等因素导致第二步未操作这可损失大了A凭空丢失100所以这种情况是不允许发生的。 此时由于是俩个操作所有MySQL会将这俩个操作打包成一个操作原子性要么一起完成要么都不完成。 如果中途发生异常此时操作将会进行“回滚”操作所有操作将会被撤销。 **补充MySQL会将每一步操作都会记录在MySQL的日志中所以可以根据日志里面的内容进行还原操作在 MySQL 中事务是由多个 SQL 语句组成的一个操作单元要么所有的操作都成功执行提交commit要么在发生错误时所有操作都不执行回滚rollback。通过事务MySQL 能够提供更强的错误恢复能力并保证数据库在并发访问时的一致性。* *事务的四大特性--------事务有四个核心特性通常被称为 ACID 特性原子性Atomicity一致性Consistency持久性Durability隔离性Isolation### **原子性****在上述操作中将多个操作打包成一个操作时此时代表这个操作具有“原子”的原子就是以前最小的单位不可拆分。*事务中的操作要么全部成功要么全部失败。原子性确保了事务是最小的执行单位无法再分割。即使在事务执行的过程中发生故障数据库也会通过回滚操作使事务的状态恢复到事务开始之前。* *### **一致性**在执行事务开始前后要保证数据是一致的不会出现对不上的情况。一旦触发“回滚”操作也要保证回滚回去的数据跟原来一样事务执行前后数据库的状态必须从一个一致的状态转变到另一个一致的状态。所有事务都必须遵循数据库的完整性约束如主键、外键等确保数据的完整性和准确性。*### 持久性一旦事务提交它对数据库的更改是永久性的即使发生系统崩溃或断电提交的事务所做的更改也会保留下来。*###隔离性****在并发环境下多个客户端同时对服务器发起事务请求一个事务的执行不应受到其他事务的干扰。每个事务应该像是在独占数据库一样执行直到它提交或回滚。在并发环境下可能会产生以下问题脏读不可重复读幻读*####脏读****脏读指的是一个事务读取了另一个事务尚未提交的数据。这可能会导致读取到不一致的数据因为另一个事务可能回滚使得当前事务读取的数据变得无效。例子 假设有一场随堂考试小明学渣抄袭小强学霸的试卷这种行为是不好的只是比喻此时小强写完了试卷给小明抄小明写着写着写完了之后小明就直接提交试卷了。但小强在检查试卷的时候发现检查试卷的时候很多答案填错了那么小强肯定将答案改正了回来,而小明吃了大亏心里想我*****还不如自己写… **核心在于当小强不仅写完试卷并且还检查完毕确保不会修改的情况下小明再去抄写他的答案不然都可能出错解法方法*当事务B查看事务A写操作的数据时候将事务A的数据进行“加锁”此时事务B不能查看A的数据必须等待事务A确定下来才可以查看。 这就相当于降低了 ‘并发能力’也就降低了数据库服务器的处理效率提高了 ‘隔离性’ 也提高了数据的准确性。在并发执行事务过程中相互之间是互相影响的彼此的影响越小隔离性越高反之影响越大隔离性越低。* *####不可重复读在上述基础上我们已经把写操作加上锁这就意味着读操作的事务不能中途查询以免没有查询到最终结果。 例子当我们写博客的时候此时读者必须等我们发布完成之后才能阅读我们的博客。 假设我们写完已经发布了 这是事务A 然后读者去查看博客的内容 这是事务B 当我们发布完 我们还觉得内容需要修改一下 可能存在一点问题 又进行发布了这是事务C **问题出现在事务B此时在读数据的时候此时我们事务C也执行了假设博客页面刷新了事务B发现此时读到的数据跟刚才读到的数据不一样这就是不可重复读问题****解法****在事务B读操作的时候 我们也不能执行事务C必须等事务B执行完之后才能修改数据也就是说在“读数据”的时候也不能“写数据”**所以对事务B读操作也加上“锁”就可以保证事务 B 前后两次读取的数据都是一致的。脏读和不可重复读的区别脏读关注的是一个事务读取另一个事务未提交的数据且这个数据可能最终会被回滚因此它是不可靠的。不可重复读关注的是同一个事务内在多次读取同一数据时数据发生了变化通常是由于其他事务的提交导致读取结果不一致。*####幻读****幻读是指一个事务在查询数据时其他事务可能插入、删除或修改记录导致该事务查询的数据集发生变化即查询结果出现幻象。在一个事务中查询的结果集在不同的查询操作之间可能不一致。例子 刚才约定对读和写操作进行加上锁。 事务A发布第一篇博客 **事务B在查询博客的内容 此时我们并不修改第一篇博客的内容闲着也是闲着于是我们继续写了新的一篇博客第二篇博客。 事务C *在B再一次查询的时候发现了多出来了一篇博客此时就是幻读。****解法****当读者在阅读博客的时候叫我们啥事别做了好好休息简单来说就是一个事务一个事务来在执行事务的时候不要执行任何操作*实现串行化操作此时没有并发了因此效率最低并且也是隔离性最高的数据是最准确的。* *####隔离性的隔离级别隔离级别脏读不可重复读幻读适用场景读未提交Read Uncommitted是是是高并发、无需完全一致性的数据场景读已提交Read Committed否是是适用于实时性要求较高的场景可重复读Repeatable Read否否是适用于大部分应用默认隔离级别串行化Serializable否否否保证最大程度的一致性但性能最低#### 总结脏读、不可重复读和幻读都是由于并发事务互相干扰所导致的问题。为了避免这些问题可以选择合适的事务隔离级别 *读未提交出现脏读不可重复读幻读。 *读已提交防止脏读但可能会出现不可重复读和幻读。 *可重复读防止脏读和不可重复读但可能会出现幻读。 *串行化完全避免所有并发问题但性能最差。

相关新闻

【MySQL】链接池原理:简单理解网站的数据流动

【MySQL】链接池原理:简单理解网站的数据流动

2026/8/31 4:12:39

前言:本节内容是博主快速上手mysql专栏的最后一篇文章。 本节内容不讲解mysql语法了, 而是以网站为例,讲一下前后端的逻辑与联系。 友友们可以当成一个故事听。> > ps:本节不需要门槛, 当成一个故事听即可!*目录…

从GLM-5.3-Flash到MHS标准:大模型成本与信任的双线竞争

从GLM-5.3-Flash到MHS标准:大模型成本与信任的双线竞争

2026/8/31 4:12:39

早上打开 BestBlogs 早报,08-28 这一期被我扫到了两条:一条是 GLM-5.3-Flash 发布,另一条是 Anthropic 推进 MHS 标准。单看标题,这两句话都可以当普通的行业动态刷过去——每天都有模型发布,每天都有公司说自己在做标…

Shell脚本实战:从基础语法到自动化运维脚本编写

Shell脚本实战:从基础语法到自动化运维脚本编写

2026/8/31 4:12:39

Shell 脚本是 Linux 自动化运维里最基础也最高频的技能。很多新手把ls、cd当成 shell 的全部,但遇到批量改文件、清理日志、定时备份、服务异常拉起这些任务时,才发现自己只会手动一条条敲命令,敲完还容易漏掉某一步。这篇文章默认读者没有写…

网易2023运维校招笔试复盘:从Linux到K8s的考点与答题思路

网易2023运维校招笔试复盘:从Linux到K8s的考点与答题思路

2026/8/31 5:12:41

网易2023校招笔试-运维工程师(有道)(正式第一批):真实考点复盘与答题思路拆解每年校招季,运维岗的笔试总被误解成“会点Linux、背几道命令题就能过”。但真到了网易有道这批运维工程师的笔试现场&#xff0…

孙宇晨刷屏长文背后:一千块房租教会我的成功习惯

孙宇晨刷屏长文背后:一千块房租教会我的成功习惯

2026/8/31 5:12:41

最近,孙宇晨的一篇长文在社交平台刷屏。整篇文章约六千字​,他耗费十几个小时打磨完成。热搜满天飞,褒贬各不相同,但有一点无法忽视:他十分擅长把亲身经历梳理成完整叙事。翻看公开资料与早年文字,抛开八卦…

ScaleVid:几何感知与免网格推理的视频物体缩放技术解析

ScaleVid:几何感知与免网格推理的视频物体缩放技术解析

2026/8/31 5:12:41

在视频编辑、影视后期和增强现实场景里,“把画面中的物体变大或缩小”是一个看起来简单、但做起来很容易露馅的需求。ScaleVid 这类技术要解决的核心问题,就是让视频中的目标物体在缩放时保持几何结构自然、不会产生抖动、扭曲或穿透。标题里的 Geometry…

总线技术概要

总线技术概要

2026/8/31 5:12:41

1. 总线1.1 总线的定义总线(Bus)是连接计算机系统各部件(CPU、主存、I/O 接口等)的一组公共信息传输线,是多个部件之间共享的信息传输介质。两个核心特征:共享性:总线为多个部件所共用&#xff…

OTA黄昏与豆包黎明:大模型如何重构设备能力分发

OTA黄昏与豆包黎明:大模型如何重构设备能力分发

2026/8/31 5:12:41

标题里最容易让人误会的,是 OTA 这个词。有人第一反应是汽车、手机上的空中升级,也有人会想到在线旅游平台。本文只讨论前者:Over-The-Air,也就是“空中下载升级”。我把 OTA 和豆包放在一起,并不是为了制造概念冲突&a…

DataGridView 是 WinForms 中最强大也最复杂的控件之一

DataGridView 是 WinForms 中最强大也最复杂的控件之一

2026/8/31 5:02:41

DataGridView 是 WinForms 中最强大也最复杂的控件之一。从基础的数据绑定跨越到“高阶交互与深度定制”,核心在于掌控其事件流机制、绘制渲染逻辑以及数据单元格的拓展能力。 以下为您梳理 DataGridView 进阶开发中的核心模块与实战代码方案: 1. 深度UI定制与自定义绘制 自…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/31 1:38:25

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

2026/8/31 0:02:27

接到一个仪表类项目,要在 LAT1189 上输出几种不同波形:正弦、三角、带可调死区的脉冲,频率和幅度都得能实时改。板子上没有 DAC,就一个定时器加几个 DMA 通道。我一开始觉得在定时器中断里改比较寄存器也能应付,后来把…

Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

2026/8/31 0:02:27

前两周调试一块带着Cortex-M3内核的板子,IDE里下载固件时突然弹出一行刺眼的错误: error: flash download failed - cortex-m3 。这种报错在嵌入式开发里太常见了,常见到很多人第一反应就是换根数据线、重插一下调试器,但重启三…

STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

2026/8/31 0:02:27

做STM32 GUI开发的朋友应该都有体会——界面搭得再漂亮,一旦屏幕切换卡成PPT,整个产品的档次瞬间就没了。早期我在LAT1212这个基于STM32的GUI工程上用TouchGFX做二次开发,最头疼的不是画界面,而是怎么让切换动画既流畅又自然。Tou…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…