什么是事务?如何执行一个事务?

article/2025/10/6 23:42:25

什么是事务,为什么要使用事务?
事务是指将一系列数据操作捆绑成为一个整体进行统一管理,如果某一事务执行成功,则在该事物中进行的所有数据更改均会提交,成为数据库中的永久组成部分,
如果事务执行时遇到错误且必须取消或回滚,则数据将全部恢复到操作前的状态,所有数据的更改均被清除。

简单的说:
事务是作为单个逻辑工作单元执行的一系列操作
事务是一个不可分割的工作逻辑单元
多个操作作为一个整体向系统提交,要么都执行,要么都不执行

那为啥要用事务呢?
举个栗子:在银行的日常业务中,只要是同一家银行一般账户之间都是支持互相转账的。假如A账户有1000元B账户0元,现在A账户直接转账1000元到B账户,正常的情况下使用SQL语句是先updateA账户的金额减少1000元,再使用SQL语句updateB账户增加1000元,这是没有问题的,但是在生活中我们不会一直都是一帆风顺的,有时候也会出现一些小意外,比如上面的转账的事务需要两个SQL语句才能完成,当你执行了第一条SQL的时候成功了,再执行第二条SQL的时候银行断电了,那你的数据造成的结果就是A账户少了1000块钱,B账户还是0元的大问题!!!所有我们现在就需要使用事务来解决这个问题!把这两个SQL语句当成一个整体来完成!

事务是作为单个逻辑工作单元执行的一系列操作,一个逻辑工作单元必须有四个属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability)这些通常简称为ACID;
1.原子性(Atomicity)
事务是一个完整的操作,事务的各元素是不可分开的(原子性)。事务中的所有元素必须作为一个整体提交或回滚,如果事务中的任何元素失败,则整个事务将失败。
按照上的案列,可以把操作的两个SQL语句看成是一个整体的事务,若是只执行了一条SQL语句,那么整个事务将失败执行回滚,也就是操作会还原到最开始的情况。
2.一致性(Consistency)
当事务完成时,数据必须处于一致状态。在事务开始之前,数据库中存储的数据处于一致状态,在正在进行的事务中,数据可能处于不一致的状态,如数据可能有部分被修改,然而当事务完成的时候,数据必须再次回到已知的一致状态。
按照上的案列来说,你一开始的时候A账户1000元和B账户0元,那么加起来就是1000元,在你执行完SQL语句之后两个账户加起来还是1000元稳定的状态,不能出现损坏了数据的情况
比如出现A账户0元和B账户也是0元的情况。事务完成之后,账户的余额的总额再次恢复到一致的状态。
3.隔离性(Islation)
并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务。
对数据进行修改的所有并发事务是彼此隔离的、这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务,修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。无论你怎么修改,若是该事物没有成功提交之后都是不生效的,数据的修改一直到你成功提交事务才会生效,A账户和B账户之间的转账,永远是相对独立的。
4.持久性(durability)
事务完成后,它对数据库的修改被永远保持。
简单的说就是一个事物完成之后,它对于数据库的改变是永久性的,即使系统出现故障也是如此,也就是说,一旦提交了事务,事务的效果将会永远地保存在数据库中。

如何执行事务?
随便提一下支持事物的存储引擎有InnoDB和BDB,MyISAm引擎不支持事务的。
默认的情况下每条SQL语句就是一个事务的,即执行SQL语句后自动提交,为了达到将几个操作作为一个整体的目的,需要先关闭自动提交模式,选择手动提交或回滚事务:
语法如下:

SET autocommit=01;

0表示关闭自动提交。
1表示开启自动提交。
我们现在是关闭所有只需要执行SET autocommit=0;就可以了
接着我们就可以开启一个事务了

BEGIN;或者START TRANSACTION; # 开启一个事物

这个语句是提交的起点,
提交事务的语法:

COMMIT;

这个语法标志一个事务成功提交,自事务开始至提交语句之间执行的所有数据更新将永久地保存在数据库中,并释放连接时占用的资源。
还有回滚撤销事务的语法:

ROLLBACK;

用于清除自事务起点至该语句所做的所有数据的更新操作,将数据库状态回滚到事务开始前,并释放由事务控制的资源。

ROLLBACK的例子执行了SQL语句之后回滚到一开始的状态如下:
在这里插入图片描述
提交事务的案列:
在这里插入图片描述
从begin开始事务,到执行commit提交事务,数据会写入硬盘,永久地保存下来。

这是我对事务的一些总结的看法,如果觉得还行,麻烦路过的小哥哥或小姐姐点个赞…,感谢你的支持我会更加努力把博客写得更好!!!

你可能想知道Spring框架的的声明式事务:
https://hxwwhl.blog.csdn.net/article/details/118175072


http://chatgpt.dhexx.cn/article/thLiyeaJ.shtml

相关文章

什么是事务,事务的ACID特性

一.什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 事务的结束有两种…

SQL中什么是事务

SQL中什么是事务 事务的概念: 事务是在数据库上按照一定的逻辑顺序执行的任务序列,既可以由用户手动执行,也可以由某种数据库程序自动执行。事务就是一些SQL语句组(每条单独的SQL语句也算一个事务),其中事…

什么是事务?事务的特性?

在mysql中,事务是一种机制、一个操作序列,是访问和更新数据库的程序执行单元。事务中包含一个或多个数据库操作命令,会把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执…

粒子群优化算法求解函数最值

一、实验题目 计算如下二元函数的最小值: (其中自变量x、y的范围均为[-50, 50]) 用matlab代码实现。代码必须能一键运行。最后输出x,y和z的最优值及收敛到最优值所需的迭代步数。算法关键参数需要注释清楚(如权重因子、学习因子…

粒子群优化算法python

粒子群优化算法PSO 粒子群优化算法基本原理算法步骤代码实现 粒子群优化算法 一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是它们知道当前的位置离食物还有多远。那么,找到食物的最简单有效的方法就是搜寻离食物最近…

基于粒子群优化算法的函数寻优算法

文章目录 一、理论基础二、案例背景1、问题描述2、解题思路及步骤 三、MATLAB程序实现1、PSO算法参数设置2、种群初始化3、寻找初始极值4、迭代寻优5、结果分析 四、惯性权重1、惯性权重的选择2、 ω \omega ω变化的算法性能分析 五、参考文献 一、理论基础 粒子群算法(parti…

自适应粒子群优化算法的MATLAB性能仿真

UP目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 粒子群优化(PSO)是一种基于群体的随机优化技术。与其它基于群体的进化算法相比,它们均初始化为一组随机解,通过迭代搜寻最优解。不同的是:进化计算遵循…

PSO粒子群优化算法

1算法简介 粒子群优化算法,在1995年由Eberhart博士和kennedy博士提出,源于对鸟群捕食的行为研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。算法流程图如下所示。 核心公式( 更新速度和位…

PSO 粒子群优化算法

粒子群优化算法(PSO) Particle Swarm Optimization 1、 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 。该算法最初是受到…

粒子群优化算法及MATLAB实现

上一篇博客是关于蚁群优化算法的,有兴趣的可以看下 https://blog.csdn.net/HuangChen666/article/details/115913181 1. 粒子群优化算法概述 2. 粒子群优化算法求解 2.1 连续解空间问题 2.2 构成要素 2.3 算法过程描述 2.4 粒子速度更新公式 …

粒子群优化算法(PSO)python实践

1 算法介绍和原理 1.1 算法原理 强烈推荐知乎大佬的这篇文章:粒子群优化算法(Particle Swarm Optimization, PSO)的详细解读 - 知乎 (zhihu.com)。该文章详细介绍了算法的原理、算法流程、参数解释和一些Tips,这里就不过多赘述了。 粒子群优化算法&am…

粒子群优化算法python实现

文章目录 前言一、粒子群优化算法是什么?二、算法流程三、算法的python实现实验结果 前言 首先简单介绍粒子群优化算法,粒子群优化算法的python实现(含代码) 一、粒子群优化算法是什么? 粒子群优化算法(Particle Swa…

【优化算法】粒子群优化算法简介

这里是引用 文章目录 1. 简介2. 涌现复杂性3. 鸟群智能建模4. 代码实现5. Conclusion参考资料 1. 简介 人工智能是计算机科学的一个大领域,它模拟计算机中的智能行为。在此基础上,提出了一种基于元启发式( metaheuristic)的粒子群…

粒子群优化算法(Particle Swarm Optimization)

转自:https://www.cnblogs.com/21207-iHome/p/6062535.html 粒子群算法的思想源于对鸟/鱼群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的,是一种基于Swarm Intelligence的优化方法。它没有遗…

粒子群优化(PSO)算法

一.算法思想 粒子群算法( Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食…

智能优化算法——粒子群优化算法(PSO)(小白也能看懂)

前言: 本文主要参考B站的一篇学习视频后,加之自己的理解和浓缩精华,不想看文字的可以直接划到末尾去b站看原视频,非常通俗易懂。 理论知识: 感性认知:如下面一张图片所示。在一个范围内,以三…

智能算法系列之粒子群优化算法

本博客封面由ChatGPT DALLE 2共同创作而成。 文章目录 前言1. 算法思想2. 细节梳理2.1 超参数的选择2.2 一些trick 3. 算法实现3.1 问题场景3.2 python实现 代码仓库:IALib[GitHub] 前言 本篇是智能算法(Python复现)专栏的第三篇文章,主要介绍粒子群优化…

粒子群优化算法(PSO)

粒子群优化算法(PSO) 粒子群优化算法(PSO)是一种进化计算技术,源于对鸟群捕食行为的研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物及群活动行…

数学建模——粒子群优化算法(PSO)【有详细样例 + 工具:matlab】(万字总结)

文章目录 一、粒子群优化算法(PSO)是什么?二、粒子群优化算法有什么用?三、粒子群优化算法的适用范围?四、算法简介(有助于理解)五、算法流程第一步:初始化第二步:计算粒子的适应度第三步:更新个体极值与全…

粒子群优化算法(PSO)附代码

文章目录 1 算法介绍2 算法模型3 实现步骤4 MATLAB代码实现PSO算法4.1. main.m4.2. 运行结果 1 算法介绍 粒子群优化算法(Particle Swarm Optimization,PSO)是一种经典的群智能算法,该算法灵感源自于鸟类飞行和觅食的社会活动,鸟群通过个体之…