事物管理.

news2024/11/28 0:53:05

目录

  • 引入
  • CURD满足什么属性,能解决上述问题?
  • 什么是事务?
  • 为什么会出现事务
  • 事务的版本支持
  • 事务提交方式
  • 事务常见操作方式
  • 事务隔离级别
    • 如何理解隔离性
    • 隔离级别
    • 查看与设置隔离性
    • 读未提交【Read Uncommitted】
    • 读提交【Read Committed】
    • 可重复读【Repeatable Read】
    • 串行化【serializable】
    • 一致性(Consistency)
  • 推荐阅读
  • 理解隔离性2
    • 数据库并发的场景有三种
    • 读-写
    • 3个记录隐藏列字段
  • RR 与 RC的本质区别
  • 推荐阅读

引入

在这里插入图片描述

CURD满足什么属性,能解决上述问题?

  1. 买票的过程得是原子的吧
  2. 买票互相应该不能影响吧
  3. 买完票应该要永久有效吧
  4. 买前,和买后都要是确定的状态吧

什么是事务?

在这里插入图片描述

为什么会出现事务

在这里插入图片描述

事务的版本支持

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务, MyISAM 不支持。

查看数据库引擎

在这里插入图片描述

事务提交方式

事务的提交方式常见的有两种:

  • 自动提交

  • 手动提交

    • 查看事务提交方式
      在这里插入图片描述
    • 用 SET 来改变 MySQL 的自动提交模式:
      在这里插入图片描述

事务常见操作方式

  • 提前准备
    在这里插入图片描述

  • 创建测试表
    在这里插入图片描述

  • 正常演示 - 证明事务的开始与回滚
    在这里插入图片描述

  • 非正常演示1 - 证明未commit,客户端崩溃,MySQL自动会回滚(隔离级别设置为读未提交)
    在这里插入图片描述

  • 非正常演示2 - 证明commit了,客户端崩溃,MySQL数据不会在受影响,已经持久化
    在这里插入图片描述

  • 非正常演示3 - 对比试验。证明begin操作会自动更改提交方式,不会受MySQL是否自动提交影响
    在这里插入图片描述

  • 非正常演示4 - 证明单条 SQL 与事务的关系
    在这里插入图片描述

  • 总结
    在这里插入图片描述

事务隔离级别

如何理解隔离性

在这里插入图片描述

隔离级别

在这里插入图片描述

查看与设置隔离性

在这里插入图片描述

读未提交【Read Uncommitted】

在这里插入图片描述

读提交【Read Committed】

在这里插入图片描述

可重复读【Repeatable Read】

在这里插入图片描述

串行化【serializable】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

一致性(Consistency)

在这里插入图片描述

推荐阅读

https://www.jianshu.com/p/398d788e1083
https://tech.meituan.com/2014/08/20/innodb-lock.html
https://www.cnblogs.com/aspirant/p/9177978.html
  • update,insert,delete之间是会有加锁现象的,但是select和这些操作是不冲突的。这就是通过读写锁(锁有行锁或者表锁)+MVCC完成隔离性。

理解隔离性2

数据库并发的场景有三种

在这里插入图片描述

读-写

在这里插入图片描述

3个记录隐藏列字段

在这里插入图片描述
在这里插入图片描述
上面描述的意思是:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对应源码策略:
在这里插入图片描述
在这里插入图片描述
此时版本链是:
在这里插入图片描述

  • 只有事务4修改过该行记录,并在事务2执行快照读前,就提交了事务。
    在这里插入图片描述
  • 我们的事务2在快照读该行记录的时候,就会拿该行记录的 DB_TRX_ID 去跟
    在这里插入图片描述

RR 与 RC的本质区别

在这里插入图片描述
关于读-读与写-写自己去了解

推荐阅读

https://blog.csdn.net/SnailMann/article/details/94724197
https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html
https://blog.csdn.net/chenghan_yang/article/details/97630626

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

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

相关文章

kaggle新赛:蛋白质功能预测大赛baseline

日前,Kaggle发布了CAFA 5 Protein Function Prediction蛋白质功能预测大赛。这是一个机器学习中的序列预测任务,需要你开发一个基于蛋白质氨基酸序列和其他数据的模型,预测一组蛋白质的功能。 该竞赛评估参与者对蛋白质序列的基因本体论&…

3D元宇宙数字展厅—虚拟智能化办公展厅引领未来办公新风尚

随着数字化技术和虚拟现实的迅猛发展,传统的办公方式正在经历一场革命性的变革。在这个数字化时代,虚拟智能化办公展厅正以其独特的优势和创新的展示方式,引领着未来办公的新风尚。 让我们一同探索虚拟智能化办公展厅的魅力,以及它…

k8s入门(二)之Deployment、DaemonSet、Job、CronJob

一、Deployment使用 状态:Available部署完成,Progressing进行中,Complete已经完成,Failed失败的 失败原因:Quota不足,ReadingnessProbe失败,image pull失败,Limit Ranges范围&#x…

一分钟跑出 AI 图像的生成平台

*Stability AI 最近推出了一个名为 StableStudio 的 AI 图像生成平台,这是一个开源的、基于社区驱动的平台,任何人都可以访问和使用。StableStudio 提供了一系列功能强大的工具和库,包括预训练模型、数据集、模型评估和调试工具等&#xff0c…

NSSCTF之Web篇刷题记录(13)

NSSCTF之Web篇刷题记录[12] [GXYCTF 2019]BabyUpload:[GKCTF 2020]cve版签到:[HCTF 2018]Warmup:[GDOUCTF 2023]泄露的伪装:[羊城杯 2020]easycon:[HNCTF 2022 Week1]Interesting_include: NSSCTF平台&…

还有人不知道,加盟连锁店该怎么做?酒店加盟连锁店如何招商?

还有人不知道,加盟连锁店该怎么做?酒店加盟连锁店如何招商? 想要创业的新人,一进到电商行业,看到繁杂的模式以及激烈的竞争关系,都没到平台亏钱的那一步,自己就先泄气了。一个企业能否发展起来&…

The Category-theoretic Perspective of Statistical Learning for Amateurs

统计学习.范畴论视角 title: The Category-theoretic Perspective of Statistical Learning for Amateurs author: Congwei Song description: A representation in BIMSA The Category-theoretical Perspective of Statistical Learning for Amateurs Congwei Song Email: …

基于SSM的疫苗接种平台

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

抢先看!文档控件aspose.words 新版本23.05 有哪些亮点?

Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理,并…

Flutter-布局(Layout)原理

1、约束、尺寸、位置 overrideWidget build(BuildContext context) {return Scaffold(body: LayoutBuilder(builder: (context, constraints) {print("body约束:" constraints.toString());return Container(color: Colors.black,width: 300,height: 300,child: L…

计算机中丢失vcomp140.dll解决方案,可以使用这个3种方法修复

vcomp140.dll是一个动态连接库文件,它是Microsoft Visual Studio 2015应用程序所必需的运行库文件之一。它在Visual C Redistributable for Visual Studio 2015包中提供,是用于支持Microsoft C/C OpenMP Runtime的库文件。计算机中丢失vcomp140.dll无法打…

LNMP网站框架搭建(编译安装)

目录 一、Nginx的工作原理 工作进程: 二、Nginx编译安装安装 三、mysql的编译安装 四、php的编译安装 验证PHP与nginx的是否连接 验证lnmp的是否搭建成功 五、部署 Discuz!社区论坛 六、fpm参数优化 一、Nginx的工作原理 php-fpm.conf …

Redis数据类型之String——字符串、数值、bitmap

Redis数据类型之String——字符串、数值、bitmap 注意索引位置一般从左到右 0开始,叫正向索引。从右到左-1开始叫反向索引 字符串 字符串有很多操作set、get、append、setrange、getrange等,每个都有自己对应的用处 SET SET key value 设置指定 key …

单元测试系列:一、了解spring boot单元测试

一、java 单元测试框架 java当前主流的测试框架有两个:JUnit、TestNG。 1、两者相同点 使用annotation,且大部分annotation相同。都可以进行单元测试(Unit test)。都是针对Java测试的工具。 2、两者不同点 JUnit只能进行单元…

【Axure教程】大小图动态轮播

大小图动态轮播常用于展示多张图片,其中包含两种不同尺寸的图片。这种类型的轮播通常用于网站首页、产品展示、广告宣传等场景,提供更丰富的展示方式,吸引用户的注意力并提供更多信息。通过切换不同的图片,可以有效地传达多个内容…

采购异常支出怎么造成的?如何控制?

采购管理中的"异常支出 "是指在企业预定的支出规则之外进行的交易。虽然大多数大型采购都是与知名供应商合作,并直接通过采购团队的合同进行,但并不是所有的采购都是这样正式进行的,这可能会导致支出不明的问题。 什么原因造成异常…

15-创建Vue3.0工程

目录 1.使用 vue-cli 创建2.使用 vite 创建 1.使用 vue-cli 创建 官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create ## 查看vue/cli版本,确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm insta…

创建孔、缩放、复制和粘贴

创建孔 项目概况: 在本项目中,您将学习如何使用孔特征从另一个形状中去除材料。 在Tinkercad上查看整个项目 指示 将蓝色多边形形状拖动到工作平面上,并将其放置在以橙色勾勒的区域。 提示: 您可能需要向下滚动形状列表才能找到…

kendoUI中的Observable详解

kendoUI中的Observable方法 一、前言 Kendo UI是一个基于JavaScript的开源UI框架,它提供了一系列的UI组件和工具,包括表格、图表、表单、对话框等。Kendo UI中的Observable是一个非常重要的概念,它可以帮助我们更好地理解和使用Kendo UI。 …

如何把握住数字化时代的浪潮,数据要素是关键

随着美国、欧洲的数字、数据战略相继出现,这意味着数据在未来的价值已经不是什么秘密,而是对未来世界发展的共识。IDC曾经预测过到2025年中国产生的数据总量将会达到48.6ZB,占全球的27.8%。这就是在未来发展数据战略的底气,也标志…