事物隔离:为什么你改了我还是看不见?

STM32+A4988控制步进电机 基于A4988芯片驱动42步进电机,在STM32F1上进行测试,最高可以实现16细分。 阅读详情

1. 引言

前面我们分别讲了一条sql查询语句是如何执行的? 和一条sql更新语句是如何执行的? 通过这两部分内容,我们了解了mysql的架构,以及不同类型sql的执行流程。同时我们也了解了数据库ACID特性中的Durablity的实现。

  1. 那么对于Isolation是如何实现的?
  2. 事物的隔离级别有哪些?要如何选择
  3. 使用事物时的注意事项?
  4. 什么是长事物?如何避免长事物?
    我们一起来探究这些问题的答案。

提到事物,你肯定不会陌生,和数据库🛢️打交道的时候,我们总会遇到事物。

  1. 最经典的例子就是转账💲,你要给朋友小王转账100块,此时你的银行卡只有100块。
  2. 转账过程具体到程序里,会有一系列的操作,比如:查询余额、扣减余额、更新余额等,这些操作必须是一个整体的。不然等程序查完之后,还没做减法之前,你这100块钱,完全可以利用时间差再转一次,如果是这样,银行就会全乱套,这个时候就会用到事物这个概念了。
    在这里插入图片描述
  3. 简单来说,事物是一组数据库操作,这些操作,要么全部成功,要么全部失败。
  4. 在Mysql中,事物是在引擎层实现的。之前我们说过,Mysql是一个支持多引擎的系统,但并不是所有的引擎都支持事物。比如MyISAM就不支持事物,这也是MyISAM被InnoDB取代的重要原因之一。
    在这里插入图片描述
    下面我们以InnoDB为例,剖析Mysql在事物支持方面的特定实现,并基于原理给出相应的实践建议。

2. 隔离性与隔离级别

2.1 事物的特性

提到事物,你肯定会想起来 ACID(atomicity-原子性,consistency-一致性,isolation-隔离性,durability-持久性)。

编号 英文名称 中文名称 解释
1 Atomicity(A) 原子性 事务中所有操作要么全部完成,要么全部不完成,不会出现部分完成的情况。如果一个事务中有多个操作,其中任意一个操作失败,则整个事务都会回滚到最初状态。
2 Consistency(C) 一致性 事务开始前和结束后数据库的完整性约束没有被破坏。在事务执行过程中,数据库会保持一致性状态,即数据库的数据经过了预定的验证,从一个一致性状态变为另一个一致性状态。
3 Isolation(I) 隔离性 并发执行的事务之间是隔离的,每个事务都不能看到其他事务未提交的结果。
4 Durability(D) 持久性 当事务成功结束后,它对数据库所做的更改将永久保存,并且即使系统发生故障也不应该丢失。

2.2 并行事物的问题

当数据库上有多个事物同时执行的时候,就可能会出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题。为了解决这些问题,才有了隔离级别的概念。

编号 英文名称 中文名称 解释
【漏洞复现】CVE-2024-44902 Thinkphp反序列化漏洞 Thinkphp v6.1.3至v8.0.4版本中存在反序列化漏洞,攻击者可利用此漏洞执行任意代码。 阅读详情

相关推荐

WPF实战:HelixToolkit 3D图形开发入门指南

本文详细介绍了如何使用HelixToolkit在WPF中进行3D图形开发,从环境搭建到创建第一个3D程序(如彩色立方体),再到进阶技巧和常见问题排查。通过实战案例和性能优化建议,帮助开发者快速掌握3D场景构建和模型导入技术,提升开发效率。

weixin_29197051的博客 758

USB3.0 Type-B连接器SSTX/SSRX信号定义常见错误与硬件设计避坑指南

本文详细解析了USB3.0 Type-B连接器中SSTX/SSRX信号的定义标准与常见设计错误。针对连接器厂商图纸可能出现的信号标识错误,提供了实用的排查方法和硬件设计避坑指南,帮助工程师避免因引脚定义颠倒导致的通信降级或故障,确保USB3.0高速传输的稳定性。

gg901的博客 1263

华为EC6110系列(3798mv310芯片)强刷固件全解析:从准备到实战

本文详细解析了华为EC6110系列(3798mv310芯片)强刷固件的全过程,从准备工作到实战步骤,包括固件特点、刷机工具准备、详细刷机步骤及常见问题解决方案。适合想要提升盒子性能的用户参考,特别强调了刷机过程中的注意事项和实用技巧。

rock5的博客 728

python3.12 百分百解决安装dlib失败问题【研究原理后Bug已解决】

python3.12 百分百解决安装dlib失败问题【研究原理后Bug已解决】 python3.12版本下安装dlib失败。截图如下。试了网上很多方法都失败,耗费了很多时间终于找到适用于python3.12版本安装dlib的方法,亲测百分百成功。几乎尝试了所有的方法都不太行。终于找到安装的方法了。 原因分析: 版本匹配问题。我们现在是python3.12 使用pip根本无法安装。下面我们一起手动安装,1分钟搞定。

一键难忘的博客 7128

科技与伦理的平衡点:人类计算的伦理

科技与伦理的平衡点:人类计算的伦理 关键词 科技与伦理 人类计算 隐私问题 道德决策自动化 公平性与偏见 法律与社会责任 摘要 本

AI天才研究院 1162

LangGraph-StateGraph 和 Graph API 源码分析

摘要: StateGraph是LangGraph的核心API,用于构建有状态工作流图。本文分析了其实现原理,包括: 核心类关系:StateGraph(构建器)和CompiledStateGraph(继承自Pregel的可执行图) 关键流程:状态模式到通道的映射、节点到PregelNode的转换 实现特点: 支持TypedDict和Pydantic两种状态模式 自动选择通道类型(LastValue或BinaryOperatorAggregate) 通过映射函数处理节点输入输出 边实现基于通道写入机制 编译过程

838

Claude Code 学习笔记之一:理解 Agentic Loop 与内置工具

本文介绍了Claude Code这一终端智能助手的工作原理与使用方式。作者从ABAP开发经验出发,指出学习Claude Code的高级用法具有长期价值。文章详细解析了Claude Code的Agentic Loop机制:通过大语言模型进行推理,借助各类工具执行任务,并循环收集上下文、执行操作、验证结果三个步骤。系统阐述了Claude Code支持的五大类工具及其扩展方式,说明了其访问本地资源的范围和自治处理能力,同时介绍了权限模式等安全机制。最后提供了从小任务开始、充分探索、及时引导、使用CLAUDE.md

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 546

为分析表明卡诺电池技术(或热泵式储电技术)-是目前最佳的储能技术!!!-2021年

卡诺电池(Carnot Battery)是一种基于热力学循环的储能技术,其核心原理是通过热力循环将电能转化为热能存储,并在需要时将热能重新转换为电能输出。这种技术得名于热力学中的卡诺循环原理,由法国工程师卡诺于1824年提出。

qq_15963745的博客 655

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 深入浅出索引-上
下一篇: 为什么我的Mysql会抖一下?
Levi.Z
博客等级 码龄12年 196粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Levi.Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值