MySQL入门篇:事物操作(开启事物,提交事物,回滚事物),事物四大特性(ACID),并发事物问题(脏读,不可重复读,幻读),事物隔离级别

目录

  • 1.事物简介
  • 2.事物操作
    • 1.查看/设置事物提交方式(方式1)
    • 2.开启事物(方式2)
    • 3.提交事物
    • 4.回滚事物
  • 3.事物四大特性(ACID)
    • 1.原子性(Atomicity)
    • 2.一致性(Consistency)
    • 3.隔离性(lsolation)
    • 4.持久性(Durability)
  • 4.并发事物问题
    • 1.脏读
    • 2.不可重复读
    • 3.幻读
  • 5.事物隔离级别
    • 1.查看事务隔离级别
    • 2.设置事务隔离级别

1.事物简介

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撒销操作
请求,即这些操作要么同时成功,要么同时失败
默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务

2.事物操作

1.查看/设置事物提交方式(方式1)

SELECT @@autocommit;
SET @@autocommit=0; -- 设置为手动提交事务

2.开启事物(方式2)

START TRANSACTIONBEGIN;

3.提交事物

COMMIT;

4.回滚事物

ROLLBACK;

事物的操作分为两种方式:
①通过设置事物的提交方式为手动提交,通过commit提交事物,通过rollback去回滚事物。
②通过指令start transaction 或者时begin来开启事物,事物执行操作完成以后,如果事物执行成功,执行commit指令,如果执行失败,执行rollback指令

3.事物四大特性(ACID)

1.原子性(Atomicity)

事务是不可分割的最小操作单元,要么全部成功,要么全部失败
如果在事务执行期间发生故障,数据库将自动回滚事务,使数据恢复到事务之前的状态。

2.一致性(Consistency)

事务完成时,必须使所有的数据都保持一致状态
在事务开始之前,数据库的约束条件必须满足。
如果在事务执行期间违反了约束条件,事务将被回滚,使数据库恢复到一致的状态。

3.隔离性(lsolation)

数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
事务的执行应该与其他事务相互隔离,每个事务应该感觉不到其他事务的存在。
隔离性确保了同时执行的多个事务不会相互干扰,防止并发执行引起的数据不一致问题。

4.持久性(Durability)

事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
事务成功提交后,对数据库的修改将永久保存,即使系统发生故障也不会丢失。
持久性保证了数据的可靠性和一致性。

4.并发事物问题

在这里插入图片描述

1.脏读

脏读(Dirty read)是指当一个事务在读取另一个事务未提交的数据时发生的情况。
也就是说,一个事务读取了另一个事务修改但尚未提交的数据。
如果这个未提交的事务最终回滚,那么读取的数据就是无效的,这会导致脏读现象。
脏读可能会产生错误或不一致的结果。

2.不可重复读

不可重复读(Non-repeatable read)是指一个事务在相同的查询语句下多次读取同一行数据时,会得到不同的结果
这是由于在事务执行期间,其他事务对该行进行了修改或删除,导致读取到的数据不一致。

例如,事务A在读取某一行数据后,事务B对该行数据进行了修改或删除,然后事务A再次读取同一行数据时,得到的结果和第一次读取的结果不一样。这种现象就是不可重复读

不可重复读可能会导致数据不一致和逻辑错误的发生。
为了解决不可重复读问题,通常使用锁机制多版本并发控制(MVCC)等方法来保证数据的一致性。

3.幻读

幻读(Phantom Read)是指在一个事务内多次执行同一个查询,但在不同的查询中返回了不同的结果集
它与不可重复读不同之处在于,不可重复读是指读取到的行数据发生了变化,而幻读是指读取到的行数发生了变化

例如,事务A在执行某个查询时,返回了一组符合条件的数据行。
随后,事务B在事务A执行期间插入了一些新的数据行,使得事务A再次执行相同的查询时,返回的结果集中出现了新插入的数据行,就像出现了幻觉一样,即发生了幻读。

幻读问题主要是由于并发事务的插入和删除操作引起的。
为了解决幻读问题,通常可以使用锁机制或多版本并发控制(MVCC)等方法来保证数据的一致性。

5.事物隔离级别

READ UNCOMMITTED:读未提交
READ COMMITTED:读已提交
REPEATABLE READ:可重复读
SERIALIZABLE:可串行化

在这里插入图片描述

注意:事物的隔离级别越高,数据库的并发性能越差,数据安全性也更低

1.查看事务隔离级别

SELECT @@TRANSACTION_ISOLATION;

2.设置事务隔离级别

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

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

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

相关文章

数据结构奇妙旅程之二叉树初阶

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

腾讯云添加SSL证书

一、进入腾讯云SSL证书: ssl证书控制台地址 选择“我的证书”,点击"申请免费证书" 2、填写域名和邮箱,点击“提交申请” 在此页面中会出现主机记录和记录值。 2、进入云解析 DNS:云解析DNS地址 进入我的解析-记录…

一、MySQL 卸载

目录 1、软件的卸载准备 2、软件的卸载 方式一:通过控制面板卸载 方式二:通过mysql8的安装向导卸载 1、双击mysql8的安装向导 2、取消更新 3、选择要卸载的mysql服务器软件的具体版本 4、确认删除数据目录 5、执行删除 6、完成删除 3、清理残…

verilog编程题

verilog编程题 文章目录 verilog编程题序列检测电路(状态机实现)分频电路计数器译码器选择器加减器触发器寄存器 序列检测电路(状态机实现) module Detect_101(input clk,input rst_n,input data,o…

机器人持续学习基准LIBERO系列4——robosuite最基本demo

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新 1.robosuite的相关资料 是基于MuJoCo的机器人学习方针环境,提供一套基准环境…

《WebKit 技术内幕》之三(3): WebKit 架构和模块

3 Webkit2 3.1 Webkit2 架构及模块 相比于狭义的WebKit,WebKit2是一套全新的结构和接口,而并不是一个简单的升级版。Webkit2 的思想同 Chrominum 类似,就是将渲染过程放在单独的进程中来完成,独立于用户界面。 webKit2中…

机器人领域顶刊TRO,TASE及RAL的区别与关系

一、背景 机器人领域越来越火,特别是在具身智能的加持下,让机器人在不久的未来可以完成更多复杂的任务,进入到我们的日常生活(不过应该还需要很长很长时间)。作为机器人方向的Researcher,我们会看许多机器…

未来科技五年人工智能行业产业发展趋势最新竞争力

人工智能(Artificial Intelligence,AI)是近年来快速发展的热门领域,被广泛应用于各个行业。随着技术的不断创新和突破,人工智能行业的竞争力也在不断提升。本文将分析未来科技五年人工智能行业产业发展趋势&#xff0c…

【JavaEEj进阶】 Spring实现留言板

文章目录 🎍预期结果🍀前端代码🎄约定前后端交互接⼝🚩需求分析🚩接⼝定义 🌳实现服务器端代码🚩lombok 🌲服务器代码实现🌴运⾏测试 🎍预期结果 可以发布并…

ssh远程访问及控制

目录 一、ssh协议简介 1、实现远程访问的协议和程序 2、ssh协议的概念及功能 3、ssh协议的工作原理 3.1 对称加密与非对称加密 3.1.1 对称加密(Symmetric Encryption) 3.1.2 非对称加密(Asymmetric Encryption) 3.2 公钥传…

微信商家转账到零钱怎么开通?场景模板

商家转账到零钱是什么? 使用商家转账到零钱这个功能,可以让商户同时向多个用户的零钱转账。商户可以使用这个功能用于费用报销、员工福利发放、合作伙伴货款或分销返佣等场景,提高效率。 商家转账到零钱的使用场景有哪些? 商家…

【生存技能】git操作

先下载git https://git-scm.com/downloads 我这里是win64,下载了相应的直接安装版本 64-bit Git for Windows Setup 打开git bash 设置用户名和邮箱 查看设置的配置信息 获取本地仓库 在git bash或powershell执行git init,初始化当前目录成为git仓库…

C++(13)——string

上篇文章中介绍了中部分函数的用法,本篇文章将继续对其他的函数进行介绍: 1. substr: string substr (size_t pos 0, size_t len npos) const; 函数的两个参数如上述代码所示,此函数的主要作用是根据一个已有的的对象的起始坐标开始&a…

论文笔记(四十)Goal-Auxiliary Actor-Critic for 6D Robotic Grasping with Point Clouds

Goal-Auxiliary Actor-Critic for 6D Robotic Grasping with Point Clouds 文章概括摘要1. 介绍2. 相关工作3. 学习 6D 抓握政策3.1 背景3.2 从点云抓取 6D 策略3.3 联合运动和抓握规划器的演示3.4 行为克隆和 DAGGER3.5 目标--辅助 DDPG3.6 对未知物体进行微调的后视目标 4. 实…

红队打靶练习:BREACH: 1

信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.110.128 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.110.1 00:50:56:c0:00:08 …

单片机I/O口驱动MOS管

自记录: 看完本章,串起来看,看mos驱动电路这篇:MOS管驱动电流计算以及分立器件驱动电路-CSDN博客 使用单片机做一个PLC,输出可如下两种情况: 单片机I/O口驱动,为什么一般都选用三极管而不是MOS管&#xf…

二叉树【Java】

文章目录 一、树型结构二、二叉树2.1概念2.2两种特殊的二叉树2.3二叉树的性质2.4二叉树的遍历 三、二叉树的基本操作3.1获取树中节点的个数3.2获取叶子节点的个数3.3获取第K层节点的个数3.4获取二叉树的高度3.5检测值为value的元素是否存在 一、树型结构 树是一种非线性的数据…

Eclipse搭建python环境

一、下载eclipse eclipse官网下载参考链接 二、 下载PyDev ​PyDev 三、安装和配置pyDev 下载完PyDev,解压之后是下面两个文件夹,我下载的版本是PyDev 7.7 ,然后拷到eclipse对应的目录下就可以 四、然后新建一个python程序 1.新建一个项目 ​​…

三、Qt Creator 使用

关于Qt的安装及环境配置,在我的上一篇《二、QT下载、安装及问题解决(windows系统)》已经讲过了。 本章节有一个重点,在新建 工程文件时,所在路径不要有中文,否则编译及运行程序不能正常运行。 在使用Qt Creator(以下…

Redis实现全局唯一Id

一、全局唯一ID 每个店铺都可以发布优惠券: 当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题: id的规律性太明显 受单表数据量的限制 场景分析:如果我们的…