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.mzph.cn/news/632251.shtml

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

相关文章

MyBatisPlus学习笔记四-扩展功能

1、代码生成器 1.1、官方的1 1.3、官方的2-idea插件 1.3、非官方的-idea插件 2、静态工具 先查询,再分组 3、逻辑删除 4、枚举处理器 5、JSON处理器

使用mininet快速入门ONOS路由交换技术与原理

在SDN下路由交换与传统硬件集成方式的路由交换技术有许多相似之处。其中一个比较重要的点是传统交换机中ASIC (Application Specific Integrated Circuit,专用集成电路)决定了其数据平面所支持的功能,而在SDN中,实现了控制面与数据面的分离。…

数组练习 Leetcode 566.重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c &#…

k8s---ingress对外服务(ingress-controller)

ingress 概念 k8s的对外服务,ingress service作用现在两个方面: 1、集群内部:不断跟踪的变化,更新endpoint中的pod对象,基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部:类似于负载均衡器&a…

进阶Docker3:Dokerfile构建镜像

目录 Dockerfile 构建基础镜像 基本机构 命令: 命令解释: 准备工作 创建镜像 上传镜像 Dockerfile Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使 用Docke…

Docker 安装 MySQ

Docker 安装 MySQL MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。 1、查看可用的 MySQL 版本 访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tabtags 。 可以通过 Sort b…

使用docker部署RStudio容器并结合内网穿透实现公网访问

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE,并通过 Web 浏览器进行访问…

旅游项目day04

1. JWT有效期 封装用户登录对象, 在指定时间过期 2. 有些接口需要登录?有些不需要登录? 后端如何知道a需要登录,b不需要登录? 注解。 3. 目的地 一个区域下面包含多个目的地 数据库表: 1. 区域表 2.…

交互设计:提升用户动机

之前给大家介绍了交互设计的底层模型——最新版福格行为模型。 模型告诉我们想让用户进行某个行为有3个步骤,第一个步骤是检查有没有(合理的)行为提示,我把它翻译成能否吸引用户注意,感兴趣的同学可以查看《交互设计之…

Linux--进程控制

进程终止 进程终止是指一个正在运行的进程结束其执行并释放占用的系统资源的过程。进程可以通过以下几种方式终止: 正常终止:进程完成了它的任务,或者遇到了终止条件,例如调用了exit()函数或主函数执行完毕。 异常终止&#xff1…

代码随想录刷题题Day36

刷题的第三十六天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C Day36 任务 ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV 1 买卖股票的最佳时机III 123.买卖股票的最佳时机III …

计算机网络——数据链路层(1)

一、概述 在计算机网络中,数据链路层承担着点对点通信的任务,用于跨物理层在网段节点之间参数数据。它在网络分层中处于物理层之上,网路层之下。 在链路层的讨论中,我们将看到两种截然不同类型的链路层信道。第一种类型是广播信道…

The Blocks Problem

本题是一道模拟题,但个人感觉挺有意思的(思路很明确,但是WA了好几发才过),因此来讲一讲思路。 题面 题面PDF 样例输入 10 move 9 onto 1 move 8 over 1 move 7 over 1 move 6 over 1 pile 8 over 6 pile 8 over 5…

设计模式——1_5 享元(Flyweight)

今人不见古时月,今月曾经照古人 ——李白 文章目录 定义图纸一个例子:可以复用的样式表绘制表格降本增效?第一步,先分析 变化和不变的地方第二步,把变化和不变的地方拆开来第三步:有没有办法共享这些内容完…

Three.js 学习笔记之模型(学习中1.18更新)

文章目录 模型 几何体 材质模型点模型Points - 用于显示点线模型Line | LineLoop | LineSegments网格模型mesh - 三角形 几何体BufferGeometry缓冲类型几何体BufferGeometry - 基类创建几何体的方式BufferAttribute Types定义顶点法线 geometry.attributes.normal BufferGeom…

您的孩子上课总是开小差?注意力不集中?来看看这个专注力提升利器!

我们会发现,有些时候孩子在上课以及写作业,虽然手里握着笔,但是思绪已经“飘到外太空去了”,无法集中注意力;考试的过程中,更是马虎大意,不经过思考就直接作答,或者重复犯简单的错误…

opengauss-高斯数据库的安装部署及MySQL数据迁移实战.

目录 介绍 下载安装包 安装 1.设置SEMMNI 2.新建用户和用户组 3.下载安装包解压 4.安装数据库 5.修改配置 6.重启服务 数据库使用 gsql命令和常用sql 1.使用omm用户连接数据库-本地登陆无需输入密码: 2.查看用户信息 3.删除数据库 4.创建用户 5.创建…

【银行测试】银行项目,信贷/贷款业务测试+常问面试(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行测试-信贷&am…

RabbitMQ常见问题之延迟消息

文章目录 一、死信交换机二、TTL1. Queue指定死信交换机并设置TTL2. 消息设置TTL 三、延迟队列1. SpringAMQP创建延迟队列2. 设置消息延迟3. 测试 一、死信交换机 当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter)&#xff…

行列转化【附加面试题】

在MySQL中,行列转换是一种常见的操作。它包括行转列和列转行两种情况。 行转列:行转列是将表中的某些行转换成列,以提供更为清晰、易读的数据视图。例如,假设我们有一个包含科目和分数的表,我们可以使用SUM和CASE语句…