6.mysql事务

MYSQL事务

  • 1.事务简介
  • 2.事务操作
    • 2.1 方式一
    • 2.2 方式二
  • 3.事务四大特性(ACID)
  • 4.并发事务问题
  • 5.事务隔离级别

1.事务简介

事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有操作作为一个整体一起想系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
在这里插入图片描述

2.事务操作

2.1 方式一

  • 查看/设置事务提交方式

SELECT @@autocommit;
SET @@autocommit = 0;

  • 提交事务

COMMIT;

  • 回滚事务

ROLLBACK;
创建表

create table account(id int auto_increment primary key comment 'ID',
name varchar(10) comment '姓名',
money int comment '账户'
)comment '账户表';insert into account values(null,'张三',2000),(null,'李四',2000);-- 恢复数据
update account set money=2000 where name ='张三' or name ='李四';

方式一
转账操作张三转账李四1000元,会话窗口不提交,才会修改数据

select @@autocommit; -- 固定的系统参数 自动提交为1
set @@autocommit=0; -- 设置0,为手动提交
-- 1.查询张三账户余额
SELECT * from account where name='张三';
-- 2.将张三账号-1000
update account set money=money-1000 where name ='张三';
-- 3.将李四账号+1000
update account set money=money+1000 where name ='李四';-- 提交事务
commit;假如事务执行出错
-- 回滚事务
rollback;

2.2 方式二

  • 开启事务

START TRANSACTION 或BEGIN;

  • 提交事务

COMMIT;

  • 回滚事务

ROLLBACK;

方式二

select @@autocommit; -- 固定的系统参数 自动提交为1
set @@autocommit=1; -- 恢复参数为1,自动提交start transaction;
-- 1.查询张三账户余额
SELECT * from account where name='张三';
-- 2.将张三账号-1000
update account set money=money-1000 where name ='张三';
-- 3.将李四账号+1000
update account set money=money+1000 where name ='李四';-- 提交事务
commit;假如事务执行出错
-- 回滚事务
rollback;

3.事务四大特性(ACID)

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么成功,要么失败。
  • 一致性(Consistency):事务完成时,必须所有的数据都保持一致。
  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  • 持久性(Durability):事务一旦提交或者回滚,它对数据中的改变就是永久的。

4.并发事务问题

问题描述
脏读一个事务读到另一个事务还没有提交的数据
不可重复读一个事务先后读取同一个记录,但两次读取的数据不同,称之不可重复读
幻读一个事务按照条件查询数据时,没有对应的数据行,但在插入数据时,又发现这行数据已经存在了’幻影‘

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

在这里插入图片描述

5.事务隔离级别

读未提交
读已提交
可重复读
序列化
在这里插入图片描述

  • 查看事务隔离级别

SELECT @@TRANSACTION_ISOLATION;

  • 设置事务隔离级别

SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }

-- 查询事务隔离级别
查看事务隔离级别
SELECT @@transaction_isolation;
-- 设置事务隔离级别,读未提交
set session TRANSACTION isolation level read uncommitted;set session transaction isolation level REPEATABLE read;

设置隔离级别read uncommitted,当数据修改,还未提交,查询会话一的数据,已经变了;脏读
在这里插入图片描述

修改隔离级别为read committed,读提交。如果会话2数据进行修改并提交,会话1在查询的时候,数据才会不一致。解决脏读问题,提交了之后出现不可以重复读
会话一
在这里插入图片描述
会话二,只有当会话二提交commit,数据才会变化
在这里插入图片描述
会出现不可重复读
在这里插入图片描述
修改隔离级别为repeatable read 会解决不可重复读,就算数据提交,同一个sql查询的数据是一致的
在这里插入图片描述
但是会出现幻读,如果会话2插入数据,会话1插入数据会显示有数据,但是查询的时候没有数据。幻读
在这里插入图片描述

设置隔离级别为serializable;解决幻读问题。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不懂就问,猫咪一到夏天就疯狂掉毛?宠物毛发异味怎么处理?

相信很多新手铲屎官都有这样的疑问,随着气温升高,家里的猫孩子疯狂掉毛,还有愈演愈烈的趋势。不用担心,这是因为宠物到了换毛季。猫咪的换毛季一年两次,多集中在春天和秋天,但也有很多猫咪的掉毛期无限延长…

中小型企业可用的数据采集监控平台 为生产带来众多改变

中小型企业采用数据采集监控平台可以显著提升生产效率、优化生产流程、增强决策能力,并带来一系列积极的改变。 数据采集监控平台可提供从边缘感知设备到云端的数据采集、存储、分析、可视化等服务,实现生产工艺流程仿真、设备运行状态监控、数据报表、趋…

【无标题】Unity Asset Hunter 插件

Asset Hunter PRO是Unity的一款插件,用于分析工程内的资源使用情况,资源大小,分析资源依赖关系,可以用来清理项目中未使用的资源。尤其是项目较大时,删除没有使用的资源很有帮助。 对于项目UI图片修改次数过多时&…

C++ | list

前言 本篇博客讲解cSTL中的list 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见📝 🎉欢迎大家点赞&…

FMR—Feature-metric Registration论文解读

目录 一、导言 二、先导知识 1、逆组合算法 三、相关工作 1、优化算法为主的配准工作 2、基于特征的点云配准 3、端到端学习的配准 四、FMR框架 1、Encoder模块 2、Decoder分支模块 3、特征指标配准分支模块 4、损失函数 五、数据集 1、ModelNet40 2、7Scene数据…

SpringBoot快速入门(自动创建)

目录 前言 步骤 1 创建项目 2 选择生成器springBoot 3 修改后,如图所示 4 点击下一步 5 点击Web----SpringWeb 6 点击创建 6.1 如果发生报错如: 6.2 替换合适版本,等待重新加载 7 添加contronller类 7.1 添加HelloController 类 8 ​​创建…

基于JAVA的医院管理住院系统研究与实现

点击下载源码 基于JAVA的医院管理住院系统研究与实现 摘 要 医院管理住院系统是一项集多类学科为一体的系统,其中包含医学、信息、计算机等学科,广泛的应用在当今欧美等发达国家,给治疗患者们提供了很大的便利。假如全面实现了这一系统&…

【启明智显技术分享】工业级HMI芯片Model3A开发过程中问题记录笔记

一、Model3A芯片介绍 Model3A是启明智显针对工业、行业以及车载产品市场推出的一款高性能、低成本的工业级HMI(Human-Machine Interface,人机界面)芯片。该芯片主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能…

Docker容器管理之FAQ

一、前言 某次,某容器服务发现无法使用了,查看状态为restaring状态,后看是云主机重启了,导致本地的nfs-server未自动启动,导致关联的集群主机,远程挂载点无法使用,影响容器服务运行。故此&#…

老师分班查询助手,新学期老师都在用!

作为一名教师,您是否曾经在新学期伊始,面对着一堆学生名单和分班结果,感到无从下手?是否曾经历过在黑板上一笔一划地写下每个学生的名字和班级,然后一遍又一遍地回答家长和学生的询问?这样的场景&#xff0…

web页面的性能测试

背景 测试大模型主要web页面的性能 使用工具 通过google自带的lighthouse测试页面的性能 各个参考指标 First Contentful Paint(FCP):测量在用户导航到页面后浏览器呈现第一段 DOM 内容所花费的时间。页面上的图像、非白色<canvas>元素和 SVG 被视为 DOM 内容&#…

ECMAScript6语法:类

在 ES6 中新增了类的概率&#xff0c;多个具有相同属性和方法的对象就可以抽象为类。类和对象的关系如下&#xff1a; &#xff08;1&#xff09;类抽象了对象的公共部分&#xff0c;它泛指某一大类&#xff08;class&#xff09;。 &#xff08;2&#xff09;对象特指通过类…

Linux:基础IO

目录 1. stdin & stdout & stderr 2. 系统文件I/O 1. 接口介绍 open write read close lseek 2. open函数返回值 3. 文件描述符fd 0 & 1 & 2 文件描述符的分配规则 重回定向 dup2 简易Shell的模拟实现 4. FILE 5. 再谈对文件的理解 1. stdin …

threejs webgl效果 功能特效

雷达效果 ​飘扬的红旗 光柱效果 OD线 下雪 下雨 光墙效果 能源球 烟火效果 threejs烟花效果 光圈效果 threejs 光圈 波动 function initScene() {scene new THREE.Scene();}function initCamera() {camera new THREE.PerspectiveCamera(45, window.innerWidth / window.inne…

深入探索PDF源码解析:从PDF到Excel的数据统计分析找到正文

在数字化时代&#xff0c;数据已成为企业决策和业务运营的关键。PDF文档作为一种广泛使用的文件格式&#xff0c;其中蕴含着大量有价值的信息。然而&#xff0c;PDF文档的结构和格式使得直接对其进行数据提取和分析变得复杂。为了解决这个问题&#xff0c;我们采取了一种创新的…

SQL注入实例(sqli-labs/less-17)

0、初始网页 1、确定闭合字符 注入点在于password框&#xff0c;闭合字符为单引号 2、爆库名 1 and updatexml(1,concat(0x7e,database(),0x7e),1)# 1 and (select 1 from (select count(*),concat((select database()),floor(rand()*2))x from information_schema.tables gr…

经纬恒润亮相第四届焉知汽车年会,功能安全赋能域控

8月初&#xff0c;第四届焉知汽车年会在上海举行。此次年会围绕当下智能电动汽车的热点和焦点&#xff0c;聚焦于智能汽车场景应用、车载通信、激光雷达、智能座舱、功能安全、电驱动系统等多个领域&#xff0c;汇聚了来自OEM、科技公司、零部件供应商、测试认证机构、政府院校…

Spark SQL Catalyst工作流程

我们写的SQL语句&#xff0c;会经过一个优化器 (Catalyst)&#xff0c;转化为 RDD&#xff0c;交给集群执行。 而Catalyst在整个Spark 生态中的地位也是至关重要的。 SQL到RDD中间经过了一个Catalyst&#xff0c;它就是Spark SQL的核心&#xff0c;是针对Spark SQL语句执行过程…

使用pytest+selenium编写网页UI自动化脚本和用例

1 UI自动化测试 UI自动化测试&#xff08;User Interface Automation Testing&#xff09;是一种通过编写脚本或使用自动化测试工具&#xff0c;对界面&#xff08;UI&#xff09;进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面&#xff0c;自动化执行用户…

kali安装docker

docker 安装 ● 1、更新 kali 下载资料源&#xff1a;apt-get update ● 2、如果出现上面没有数字签名问题&#xff0c;那就是需要下载证书 使用命令&#xff1a; wget archive.kali.org/archive-key.asc #下载证书 apt-key add archive-key.asc #添加证书 ● 3、重新更新一…