当前位置: 首页 > news >正文

MySQL-事务

MySQL-事务

1.什么是事务

举例:想象炒菜的过程。

  1. 洗菜
  2. 切菜
  3. 炒菜
  4. 装盘

我相信缺少任何任何一个步骤,都不完美!!!可以将炒菜的过程理解为一个事务,是一组操作的集合,而MySQL中的事务也是如此。但在MySQL中定义了事务的一些特性。只有符合这些特征才能称之为MySQL事务,它们保证了数据库在并发环境下的正确性和可靠性。

2.事务的特性

1.1原子性

在MySQL中事务像原子一样不可分割的,要么都执成功,要么都执行失败。事务中的SQL语句执行错误,已经执行的SQL语句必须撤销,回滚到事务执行之前的状态。

1.2一致性

指的是事务开始和结束前后,数据库的完整性没有被破坏。(例如转账前后双方的金额和是不会发生变化的,保持一致)

1.3持久性

事务一旦提交,其执行的结果将持久化到数据库,即使系统宕机也能恢复。

1.4.隔离性

表示多个事务可以同时执行,互相隔离。

3.事务的分类

保存点:保存点(Savepoint)是事务过程中的一个中间状态,它可以在事务执行过程中被创建和命名。保存点允许事务回滚到某一状态。

3.1扁平事务

使用最频繁的事务,存在一个隐式的保存点,有且仅有这一个隐式保存点,在开始事务时隐式创建的保存点。当然,我们也可以在事务中自定义保存点。

-- 创建一个保存点
SAVEPOINT save_point_name;
-- 删除某个一保存点
release savepoint point_name;
-- 回滚到某一个保存点
ROLLBACK TO save_point_name;

例如:对商品表进行第一次修改,设置保存点,进行第二次修改,回滚到设置的保存点,然后提交。

-- 商品表如下
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(11)          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(32)      | NO   |     | NULL    |                |
| count | int(10) unsigned | YES  |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+begin;
update product set count = 2500 where id = 1;
savepoint p1;
-- 该条数据被回滚,修改不生效
update product set count = 2000  where id = 1;
rollback to p1;
commit;

扁平事务保存点的易失性:带有保存点的扁平事务发生系统崩溃故障时,保存点会消失,一旦保存消失,只能恢复到事务最开始的状态。

注意:rollback不指定回滚的保存点,将默认回滚到隐式保存点。

3.2链事务

链事务的本质是开启多个事务,它们是独立提交的且处于同一层级,提交一个事务时,释放不需要的数据对象。在提交事务和开始下一个事务操作会合并成一个原子操作,下一个事务可以看见上一个事务的执行结果。

commit和commit work的区别:

complection_type:设 set @@completion_type=1;

  1. complection_type=0,commit和commit work是一样的效果,提交事务。
  2. complection_type=1,执行commit work/commit后会自动开启一个相同隔离级别的事务。
  3. complection_type=2,commit work/commit等同于commit and release,事务提交后断开与服务器的连接并重新开启一个会话。

3.3嵌套事务

嵌套事务本质上也是多个事务嵌套执行,由最外层的事务控制内层事务。内层事务也可以嵌套其他事务。可以看做它们是树形的具有父子关系。子事务可以提交也可以回滚,回滚不会影响父事务,只会影响当前事务,但是提交操作不会立即生效,需要最后和父事务同时提交。

4.事务的实现

1.redo

主要功能:实现事务的持久性。

记录物理级别上的页修改,当事务提交时,必须先将事务的所有日志写入到redo日志文件进行持久化。

数据库存储数据的位置位于磁盘,想要知道磁盘的内容我们需要将其加载到内存,在内存中读取和操作数据。数据库对数据进行更改时,需要将数据页加载到buffer pool(缓存池),在buffer pool中更改数据,当buffer pool中的数据还没有同步到磁盘,就会暂时和磁盘页的内容不一致,这些未同步的数据页,通常称之为脏页(dirty page)。如果出现数据库崩溃或者是宕机,这些脏页的数据丢失,从而失去了持久性。因此数据库需要一种机制来记录对数据的修改。即使数据发生故障也能进行恢复。

redo实现日志持久化的原理:事务将这些修改操作写入redo log buffer,准备提交事务时。系统会将redo log buffer中的修改操作写入redo log file。

2.undo

undo日志通过记录数据的历史版本和撤销操作信息,方便数据进行回滚。

undo是逻辑日志,当发生回滚时,所有的修改都被逻辑取消了。InnoDB存储引擎回滚时,它实际上做的是与之前相反的工作,例如插入操作,Innodb存储引擎会完成一个delete;删除操作,InnoDB存储引擎会执行一个insert操作;update操作,Innodb存储引擎会执行一个相反的update操作。

5.事务管理器

InnoDB的事务管理器是InnoDB数据库引擎的核心组件之一,它负责协调和管理数据库事务的处理。

在MySQL中,事务中对数据的锁定都是由事务管理器来管理的。当一个事务获取了对某一行的锁时,该锁将一直保持有效,直到事务结束(提交或回滚)才会被释放。

在事务执行期间,如果其他事务尝试获取同一行的锁,它将被阻塞,直到当前事务释放对该行的锁为止。这样可以确保在一个事务执行期间,其他事务无法修改该行,从而保持了数据的一致性。

在事务提交或回滚时,事务管理器将释放所有该事务所获取的锁。这样,其他事务就可以获取这些锁并对数据进行修改。如果事务被回滚,那么它对数据的修改将被撤销,同时对数据的锁定也将被释放。

相关文章:

MySQL-事务

MySQL-事务 1.什么是事务 举例:想象炒菜的过程。 洗菜切菜炒菜装盘 我相信缺少任何任何一个步骤,都不完美!!!可以将炒菜的过程理解为一个事务,是一组操作的集合,而MySQL中的事务也是如此。但…...

自动定时删除磁盘文件的脚本(从文件日期最早的开始删)

#!/bin/bash# 指定的挂载点 MOUNTPOINT"/media/vm/MyDisk512GB"# 设置磁盘大小的限制 (例如:800G) LIMIT$((800 * 1024 * 1024)) # 单位是KB# 获取挂载点的已使用空间 USED_SPACE$(df -kP "$MOUNTPOINT" | tail -1 | awk {print $3})echo &quo…...

拆解CPU的基本结构和运行原理

CPU的基本结构 CPU是一个计算系统的核心 南北桥芯片将CPU与外设连接起来 CPU执行流程 CPU的电路基础 组合电路基本原理 时序电路基本原理 多核成为主流 汇编语言和寄存器 中断的基本原理 中断的产生 中断服务程序 CPU 做为计算机的总司令官,它管理着计算…...

Docker安装——Ubuntu (Jammy 22.04)

一、为什么要用 Ubuntu?(centos和ubuntu有什么区别) 使用lsb_release命令:lsb_release -a ,即可查看ubantu的版本,但是为什么要使用ubantu 呢? 区别:1、centos基于EHEL开发,而ubunt…...

Fast DDS之Transport

目录 transport层负责为DDS用户数据收发和服务发现提供通信。包含UDP,TCP,SHM。...

爱普生L125X_L325X系列打印机Wi-Fi配置方法(Smart Panel)

准备工作: 手机需要下载“Epson Smart Panel”APP; 配置无线(Wi-Fi)方法 说明:SSID名称(Wi-Fi名)不能包含中文字符,路由器需要选择2.4GHz频段; 1. 打开“Epson Smart Panel”软件&#xff0…...

【回顾一下Docker的基本用法】

文章目录 回顾一下Docker的基本用法1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.…...

【Python】Python基础知识

【Python】Python基础知识 关键字 查看Python关键字: >python >>>import keyword >>>keyword.kwlist 注释 注释有两方面作用: (1)提高程序的可读性(最重要的作用)&#xff1b…...

【计算机视觉 05】YOLO论文讲解:V1-V7

https://ai.deepshare.net/live_pc/l_63243a65e4b050af23b79338 Part1.目标检测与YOLO系列 1. 目标检测任务及发展脉络 2. YOLO的发展史 Anchors Base原理: Part2.YOLOV1-V3 3. YOLO V1的网络结构 4. YOLO V3的网络结构与实验结果 Part3.YOLO的进化 5. YOLO V4的网络…...

git全局与单仓库的密码管理

概要 在使用git时,有默认的全局配置,每个仓库也有自己的配置,在使用时常常傻傻分不清楚,现在进行一个简单的整理记录。 一般情况下全局配置中的git账号和邮箱通常设置成自己的,其他仓库再根据项目需要进行单独配置&a…...

IDEA的使用(一) (IntelliJ IDEA 2022.1.3版本)

目录 1. IDEA项目结构 2. 模块的导入操作 2.1 正规操作 2.2 取巧操作 2.3 出现乱码 2.4 模块改名 3. 代码模板的使用 后缀补全(Postfix Completion)、实时模板(Live Templates)菜单里面什么介绍都有,可以自学&a…...

javaee SpringMVC文件上传 项目结构

引入依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…...

JavaScript DOM 函数大全详解(使用最新的 JS 语法)

JavaScript DOM 函数大全详解&#xff08;使用最新的 JS 语法&#xff09; JavaScript 的 Document Object Model&#xff08;DOM&#xff09;是用于操作网页内容的编程接口。在最新的 JavaScript 语法下&#xff0c;我们有很多方便和高效的方法来处理 DOM。下面是一些常用 DO…...

Stm32_标准库_8_ADC_光敏传感器_测量具体光照强度

ADC简介 测量方式 采用二分法比较数据 IO通道 ADC基本结构及配置路线 获取数字变量需要用到用到光敏电阻的AO口&#xff0c;AO端口接在PA0引脚即可 测得的模拟数据与实际光照强度之间的关系为 光照强度 100 - 模拟量 / 40;代码&#xff1a; 完整朴素代码&#xff1a; #in…...

基于SSM的固定资产管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

Leetcode---364场周赛

题目列表 2864. 最大二进制奇数 2865. 美丽塔 I 2866. 美丽塔 II 2867. 统计树中的合法路径数目 一、最大二进制奇数 这题只要你对二进制有了解(学编程的不会不了解二进制吧)&#xff0c;应该问题不大&#xff0c;这题要求最大奇数&#xff0c;1.奇数&#xff1a;只要保证…...

使用 Powershell 检索不理解的命令

使用 Powershell 检索不理解的命令 尝试使用 Powershell 完成 Powershell 的命令行 使用 Powershell 时&#xff0c;有时您会忘记某个 cmdlet 或想要了解哪些 cmdlet 可用。在这种情况下&#xff0c;最好在互联网上查找&#xff0c;但您也可以使用 Powershell 函数来完成。 以…...

基于 FPGA 的机器博弈五子棋游戏

基于 FPGA 的机器博弈五子棋游戏 一,设计目的 五子棋是一种深受大众喜爱的游戏,其规则简单,变化多端,非常富有趣味性 和消遣性。棋类游戏在具备娱乐性、益智性的同时也因为其载体大多是手机, 电脑等移动互联网设备导致现代社会低头族等现象更加严重,危害青少年的身 体健康…...

uCOSIII实时操作系统 三 移植

目录 uCOSIII简介&#xff1a; 准备工作&#xff1a; 准备基础工程&#xff1a; UCOSIII工程源码&#xff1a; UCOSIII移植&#xff1a; 向基础工程中添加相应的文件夹 向工程中添加分组 常见问题&#xff1a; 下载验证&#xff1a; uCOSIII简介&#xff1a; UCOS-I…...

机器学习之SGD, Batch, and Mini Batch的简单介绍

文章目录 总述SGD(Stochastic Gradient Descent)(随机梯度下降&#xff09;Batch &#xff08;批量&#xff09;mini Batch (迷你批量&#xff09; 总述 SGD, Batch, and Mini Batch是可用于神经网络的监督学习计算权重更新的方案&#xff0c;即∆wij。 SGD(Stochastic Gradi…...

5分钟快速上手COLA架构:构建清晰分层的企业级应用完整指南

5分钟快速上手COLA架构&#xff1a;构建清晰分层的企业级应用完整指南 【免费下载链接】COLA &#x1f964; COLA: Clean Object-oriented & Layered Architecture 项目地址: https://gitcode.com/gh_mirrors/col/COLA COLA&#xff08;Clean Object-oriented &…...

2026厦门国际智能交通运输产业博览会开幕:海外需求与国内先进技术的双向奔赴

2026年5月13日&#xff0c;为期三天的2026厦门国际智能交通运输产业博览会&#xff08;CITSE 2026&#xff0c;以下简称“智交会”&#xff09;隆重开幕。本届智交会由中国智能交通协会联合厦门会展集团股份有限公司共同举办&#xff0c;以“聚焦产业创新变革&#xff0c;赋能出…...

时间序列分类的能效优化与剪枝策略实践

1. 时间序列分类的能效挑战与剪枝策略概述时间序列分类&#xff08;Time Series Classification, TSC&#xff09;作为机器学习的重要分支&#xff0c;在医疗监测、工业设备故障诊断、金融行为分析等领域发挥着关键作用。随着应用场景的复杂化和数据规模的扩大&#xff0c;传统…...

量子生成分类技术:原理、优势与应用解析

1. 量子生成分类技术概述量子生成分类&#xff08;Quantum Generative Classification, QGC&#xff09;是一种基于量子计算原理的新型机器学习范式&#xff0c;它从根本上改变了传统分类任务的实现方式。与常见的判别式学习方法不同&#xff0c;QGC采用生成式学习策略&#xf…...

Python代码质量双保险:Black格式化与类型提示实战指南

1. 项目概述&#xff1a;当代码格式化遇上类型安全在嵌入式开发&#xff0c;尤其是像CircuitPython这样的微控制器编程领域&#xff0c;代码的清晰度和可靠性往往比在桌面环境更为重要。资源受限、调试困难&#xff0c;意味着每一行代码都最好能“一次写对”。我这些年折腾过不…...

FCOS训练自己的数据?从Labelme标注到VOC格式转换,这份避坑指南请收好

FCOS训练自定义数据集&#xff1a;从Labelme标注到VOC格式的完整避坑指南 当你已经用Labelme完成了图像标注&#xff0c;却卡在数据格式转换这一步时&#xff0c;这篇文章将成为你的救星。FCOS作为一款优秀的全卷积目标检测模型&#xff0c;对输入数据格式有着严格的要求&#…...

【NotebookLM海洋学研究辅助实战指南】:20年海洋数据科学家亲授AI笔记法,3步构建专属科研知识图谱

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM海洋学研究辅助 NotebookLM 是 Google 推出的基于用户上传文档进行深度语义理解与推理的 AI 工具&#xff0c;特别适用于海洋学这类多源异构、长周期、高专业性的科研场景。研究人员可将 PDF…...

OpenClaw-RUH:基于深度学习的机器人灵巧抓取框架解析与实践

1. 项目概述&#xff1a;当AI遇上“机械爪”最近在AI和机器人交叉的圈子里&#xff0c;一个名为“OpenClaw-RUH”的项目引起了我的注意。乍一看这个标题&#xff0c;你可能会觉得它又是一个开源的机械臂控制项目。但当我深入其代码仓库和社区讨论后&#xff0c;发现它的野心远不…...

taotoken的用量看板如何帮助我们优化ai提示词设计

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 taotoken的用量看板如何帮助我们优化AI提示词设计 效果展示类&#xff0c;结合一个内容生成项目的实际经验&#xff0c;说明如何通…...

懒人必备!OpenClaw 汉化版一键配置上手教程

一、Windows 11 安装 OpenClaw 必看说明 OpenClaw&#xff08;国内用户昵称"小龙虾"&#xff09;是一款广受欢迎的开源本地AI助手&#xff0c;GitHub星标数已超28万。它集成了多项实用功能&#xff1a;电脑自动操控、智能文件管理、浏览器自动化以及办公流程自动化等…...