MySQL13、事务MVCC

news2024/9/23 10:16:23

什么是事务?

我们知道MySQL是一个客户端+服务器架构的软件。对于同一个服务器来说,可以有多个客户端连接,每个客户端与服务器建立连接后,就形成了一个会话。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分。服务器可以同时处理来自多个客户端的多个事务。

事务就是一个最小的、不可在分的工作单元,通常一个事务对应一个完整的业务。(比较经典的就是银行转账,要么都成功,要么都失败,没有中间状态)

事务的ACID

  1. 原子性(Atomicity):一个事务是一个不可再分割的整体,要么全部成功,要么全部失败。

    事务在数据库中就是一个基本的工作单位,事务中包含的逻辑操作(SQL 语句),只有两种情况:成功和失败。事务的原子性其实指的就是这个。

  2. 一致性(Consistency):一个事务可以让数据从一种一致状态切换成另一种一致状态。比如:张三给李四转账 100 元,那么张三的余额应减少 100 元,李四的余额应增加 100 元,张三的余额减少和李四的余额增加这是两个逻辑操作具有一致性。

  3. 隔离性(Isolution):一个事务不受其他事务的影响,并且多个事务彼此隔离。一个事务内部的操作及使用的数据,对并发的其他事务是隔离的,并发执行的各个事务之间不会互相干扰。

  4. 持久性(Durability):一个事务一旦被提交,在数据库中的改变就是永久的,提交后就不能再回滚。一个事务被提交后,在数据库中的改变就是永久的,即使系统崩溃重新启动数据库数据也不会发生改变。

事务必须满足ACID,否则数据就会出现混乱,这是不能忍受的。那如何实现ACID呢,最简单粗暴的方法就是系统在同一时间最多允许一个事务执行。其他事务只能在当前事务执行完毕,才能执行,相当于事务排队,这种也称为 串行执行。

串行执行缺点很明显,会降低系统的吞吐量和资源利用率,同时增加事务的执行时间,这肯定也不行。鱼和熊掌不可兼得,解决办法就是,牺牲一部分隔离性来换取系统的吞吐量和资源利用率。

在说如何实现之前,我们先了解一下,多个事务并发执行,会遇到哪些问题??

事务并发执行的问题

脏读

如果一个事务读取到另一个未提交事务修改过的数据,就意味着发生了脏读现象。

不可重复读

是指在一个事务内,多次读取同一数据。在这个事务还没有结束时,另外一个事务也访问该条数据,并修改了数据。在第一个事务中两次读取数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的现象。

幻读

如果一个事务先根据某些搜索条件查询出一些记录,在该事务未提交时,另一个事物写入了一些符合那些搜索条件的记录(这里的写入可以是INSERT、DELETE、UPDATE),这就意味着发生了幻读现象。(简单来说就是,一个事务根据某些条件搜索,第一次查询是3条符合,第二次再查变成了5条符合)

不可重复读和幻读区别:不可重复读的重点是修改,幻读的重点是新增或者删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2157277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

桶排序和计数排序(非比较排序算法)

桶排序 桶排序是一种基于分配的排序算法,特别适合用来排序均匀分布的数据。它的基本思想是将输入的数据分到有限数量的桶里,然后对每个桶内的数据分别进行排序,最后再将各个桶内的数据合并得到最终的排序结果。(通常用于浮点数,因…

LLM大模型训练/推理的显卡内存需求计算

无论你是从头开始训练 LLM、对其进行微调还是部署现有模型,选择合适的 GPU 对成本和效率都至关重要。在这篇博客中,我们将详细介绍使用单个和多个 GPU 以及不同的优化器和批处理大小进行 LLM 训练和推理时 GPU 要求的所有信息。 计算机处理器由多个决定…

SM2无证书及隐式证书公钥机制签名和加密过程详解(一)

前面介绍SM2无证书及隐式证书公钥机制下用户公私密钥对的Python实现(具体参看SM2隐式证书用户公私钥生成python代码实现_sm2 python 密钥生成-CSDN博客),可以看到需由用户和KGC(可信密钥生成中心)共同参与才能计算得到…

小程序-基础知识1

Mustache语法 小程序和vue一样提供了插值语法 但是小程序不能调用方法{{xxxx()}} hidden属性 hidden是所有组件都默认拥有的属性, hidden与wx:if的区别: wx:if是控制组件是否渲染,hidden控制显示或隐藏是通过添加hidden属性。 wx:for 除了可以遍历…

服务器配置虚拟环境及离线安装python

本篇文章基于已经装好conda环境进行哈,不会安装conda可参考服务器离线安装anaconda-CSDN博客 1.打印现有虚拟环境列表 conda env list,可以看见我现在有base、ai、py38三个环境 2.删除指定虚拟环境 conda remove -n py38 --all,回车后输入ye…

LeetCode 面试经典150题 190.颠倒二进制位

复习知识:正数的原码、反码、补码相同,负数的反码在其原码的基础上, 符号位不变,其余各个位取反,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后1 (即在反码的基础上1)。 题目:颠倒给定的 32 位无符号…

全国及分(31个)省全社会就业人数(1978-2022年)

分省就业人数分析 经济发达省份:如广东、江苏、浙江等省份的就业人数较高,这与它们的经济发展水平和产业结构密切相关。欠发达省份:虽然就业人数相对较低,但也呈现出增长态势,显示了国家在区域协调发展上的成效。 从…

软考高级:数据库事务状态区分:活动、部分提交、提交、失败、中止 AI 解读

讲解 数据库事务状态的区分可以用来表示事务在不同阶段的状态。事务(Transaction)是数据库中的一组操作,要么全部成功,要么全部失败。这些状态可以帮助我们理解事务从开始到结束的整个生命周期。 生活化例子 假设你去餐厅点餐&…

AI资深导师指导-ChatGPT深度科研工作应用、论文撰写、数据分析及机器学习与AI绘图

2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在…

操作系统week3

操作系统学习 三.内存管理 16.内存映射文件 传统的文件访问方式: open系统调用–打开文件seek系统调用–将读写指针移到某个位置read系统调用–从读写指针所指位置读入若干数据write系统调用–将内存中的指定数据,写回磁盘 内存映射文件的访问方式&…

2.pytest框架实现一些前后置(固件,夹具)的处理,断言和allure-pytest插件生成allure测试报告

一、setup/teardowm,setup_class/teardown_class(所有) 为什么需要这些功能? 比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器吗? 前置后置 二、使用pytest.fixture…

KamaCoder 103. 水流问题

题目要求 N*M的矩阵,数值代表位置的相对高度。矩阵模拟了一个地形,当雨水落上时,会根据地形倾斜向低处流动。但是只能从较高或等高的地点流向较低或等高并且相邻的地点,我们的目标是确定那些单元格,从这些单元格出发的…

[数据结构与算法·C++] 笔记 2.1 线性表

线性结构 概念 二元组 B ( K , R ) B(K,R) B(K,R) K a 0 , a 1 , . . . , a n − 1 K{a_0,a_1,...,a_{n-1}} Ka0​,a1​,...,an−1​ ( R r R{r} Rr) 有一个唯一的开始结点,它没有前驱,有一个唯一的直接后继一个唯一的终止结点,它有一个…

Diffusion Models/Score-based Generative Models背后的深度学习原理(7):估计配分函数

Diffusion Models专栏文章汇总:入门与实战 前言:有不少订阅我专栏的读者问diffusion models很深奥读不懂,需要先看一些什么知识打下基础?虽然diffusion models是一个非常前沿的工作,但肯定不是凭空产生的,背…

【水文】LLM 成文测试|探索嵌入式硬件编程的奥秘:入门基础知识的全面解析

这次用的是智谱清言的,文字质量比百度的高一些。 但是在按要求改写的方面还是需要给出太过明确的指令,麻烦。 探索嵌入式硬件编程的奥秘:入门基础知识的全面解析 嵌入式硬件作为现代科技的核心,广泛应用于各种设备和系统中。对于…

【OSS安全最佳实践】对OSS内身份证图片中身份证号进行脱敏

为确保存储在私有OSS Bucket特定文件夹中包含中国内地身份证信息的PNG、JPG、JPEG、BMP或WEBP格式图片,在与其他用户共享时身份证信息不被泄露,可使用数据安全中心 DSC(Data Security Center)的图片脱敏功能。DSC目前仅支持对身份…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22 引言: 全球最热销的国产游戏-《黑神话: 悟空》不仅给世界各地玩家们带来愉悦,而且对计算机人工智能研究也带来新的思考。在本期的论文速读中,我们带来一篇关于视觉语言模型&#xff0…

【C++高阶】深入理解C++ I/O流:标准库中的隐藏宝石

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C 特殊类 🌹🌹期待您的关注 🌹🌹 ❀ C IO流 📒1. C语言的输入…

Linux中的动静态库

目录 前言 1.库的文件名 2.库的制作 对于动态库: 对于静态库: 3.库文件的查找 4.库的加载与使用 对于动态库: 对于静态库: 可执行程序分段: 程序的编址于动态库: 总结 前言 在刚开始学习C语言…

NASA:ASTER L1A 重建未处理仪器数据 V003

ASTER L1A 重建未处理仪器数据 V003 简介 先进星载热发射和反射辐射计(ASTER)1A 级(AST_L1A)包含重建的仪器数字编号(DN),这些数字编号来自所获取的望远镜遥测数据流: 可见光和近红…