MySQL 事务特性和事务隔离级别

news2024/11/17 5:54:32

1. MySQL 事务的四大特性
2. MySQL 事务的并发问题
3. MySQL 事务的隔离级别

---------------------------------------------------------
1. MySQL 事务的四大特性

MySQL 事务具有四个特性:原子性、一致性、隔离性、持久性,这四个特性简称 ACID 特性

一、原子性(Atomicity ):一个事务是一个不可再分割的整体,要么全部成功,要么全部失败

事务在数据库中就是一个基本的工作单位,事务中包含的逻辑操作(SQL 语句),只有两种情况:成功和失败。事务的原子性其实指的就是这个逻辑操作过程具有原子性,不会出现有的逻辑操作成功,有的逻辑操作失败这种情况

二、一致性(Consistency ):一个事务可以让数据从一种一致状态切换到另一种一致性状态

举例说明:张三给李四转账 100 元,那么张三的余额应减少 100 元,李四的余额应增加 100 元,张三的余额减少和李四的余额增加这是两个逻辑操作具有一致性

三、隔离性(Isolution ):一个事务不受其他事务的影响,并且多个事务彼此隔离

一个事务内部的操作及使用的数据,对并发的其他事务是隔离的,并发执行的各个事务之间不会互相干扰

四、持久性(Durability ):一个事务一旦被提交,在数据库中的改变就是永久的,提交后就不能再回滚

一个事务被提交后,在数据库中的改变就是永久的,即使系统崩溃重新启动数据库数据也不会发生改变

2. MySQL 事务的并发问题


上面讲到了事务的隔离性,当有多个任务时,应当让多个事务同时执行,这就是事务的并发。既然事务存在并发执行,那必然存在两个事务操作同一个数据的冲突问题,那么我们来看一下会出现哪些问题

下面介绍脏读、不可重复读、幻读时会涉及到事务隔离级别,可先略过。按照提示设置事务隔离级别即可,本文后面会介绍事务隔离级别。测试这几个事务并发问题可以通过打开两个终端窗口进行测试

查看事务隔离级别

 
  1. select @@transaction_isolation;

一、脏读

测试脏读: 将事务隔离级别修改为读未提交

 
  1. # READ-UNCOMMITTED 读未提交
  2. set session transaction isolation level read uncommitted;

现在有两个事务,分别是事务 A 和事务 B。在事务 A 中查询一条数据,查询结果中 score 的值是 80,然后事务 B 去修改这一条数据,将 score 的值改为 90,但是它没有提交,这时候事务 A 去查询这条数据,发现数据竟然发生了变化。

脏读: 在一个事务里面,由于其他事务修改了数据并且没有提交,而导致前后两次读取的数据不一致的情况,这种事务并发问题称之为 “脏读”

二、不可重复读

测试不可重复读: 将事务隔离级别修改为读已提交

 
  1. # READ-COMMITTED 读已提交
  2. set session transaction isolation level read committed;

同样是两个事务,事务 A 查询一条数据,事务 B 修改了这条数据,特别注意,这里事务 B 执行了提交,但是事务 A 还没有提交或回滚,这种事务并发问题称为不可重复读

不可重复读: 一个事务读取到其他事务已提交的数据导致前后两次读取数据不一样的情况

三、幻读

测试可重复读: 将事务隔离级别修改为可重复读

 
  1. # REPEATABLE-READ 可重复读(默认的事务隔离级别)
  2. set session transaction isolation level repeatable read;

幻读: 一个事务前后两次读取的数据不一致,是因为其他事务插入数据导致的事务并发情况

3. MySQL 事务的隔离级别


MySQL 事务有四种隔离级别,如下所示,表格中的 “是” 代表存在这个问题,“否” 代表没有这个问题

隔离级别脏读不可重复读幻读
Read uncommitted(读未提交)
Read committed(读已提交)
Repeatable read(可重复读,默认的隔离级别)
Serializable(可串行化)

查看事务隔离级别

 
  1. # 查看全局事务隔离级别
  2. select @@global.tx_isolation;
  3. # 查看会话事务隔离级别(也就是当前窗口)
  4. select @@tx_isolation;
  5. select @@transaction_isolation;

设置事务隔离级别

 
  1. # 读未提交
  2. set session transaction isolation level read uncommitted;
  3. # 读已提交
  4. set session transaction isolation level read committed;
  5. # 可重复读(默认隔离级别)
  6. set session transaction isolation level repeatable read;
  7. # 可串行化
  8. set session transaction isolation level serializable;

总结:

MySQL 的默认隔离级别是可重复读,不是读已提交

隔离性从低到高分别是:读未提交、读已提交、可重复读、可串行化

并发性跟隔离性恰好相反,从低到高是:可串行化、可重复读、读已提交、读未提交

这也非常好理解,隔离性越高,说明锁的粒度越细,并发性自然就会降低

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

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

相关文章

写文章常用的几款软件

编写文章Typora Typora网址 就是一款非常优秀的桌面端笔记本软件, 支持实时预览的 Markdown 文本编辑器. 支持导出HTML, PDF, Word等格式 画图excalidraw excalidraw在线网址 一个开源免费的画图软件 目前看到的最舒服的画图软件, 拥有丰富的图库, 好看的风格 录制GIF的LICEc…

Go开发中如何进行自定义Response.go封装实现

自定义Respone好处 在写接口的时候,我们通过都需要将前端小伙伴发给我们的请求进行校验和返回数据,如果是正确的请求参数,那么也符合我们的校验,则需要返回数据给他们,并且给予提示;反之,如果请…

不知道WPS转PPT怎么转换?来看看我自用的两种方法就知道了

wps转ppt怎么转换 (百)wps转ppt怎么转换?分享这几种转换方法 (搜)WPS怎么转PPT?今天教你学会WPS转PPT (企)WPS如何转PPT?WPS转PPT转换方法分享 (网&#xff…

Datax

1、Datax简要描述 DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、…

ADI Blackfin DSP处理器-BF533的开发详解39:图像处理专题-图像灰度均衡处理(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像灰度均衡,代码运行时,会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

ADI Blackfin DSP处理器-BF533的开发详解37:图像处理专题-YUV420 转 RGB565(含源代码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了将 YUV420 数据格式转为 RGB565 格式。YUV420 的数据格式必须是两度和色度分离的。 板卡液晶屏和 VDSP 软件商 Image Viewe…

【小甲鱼C语言】课后笔记第一章第三节——常量和宏定义

目录 1、常见的常量 2、宏定义(符号常量) 3、标识符 4、字符串常量 5、课后习题(编程题) 1、常见的常量 整型常量:520, 1314, 123 实型常量:3.14, 5.12, 8.97 字符常量 普通字符:L, o, v,…

基于短期的风力发电概率预测(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

Stm32旧版库函数5——ov2640通过nrf24l01发送图像

视频采集端: /******************************************************************************* // // 使用单片机STM32F100C8T6 8 // 晶振:8.00M // 编译环境 Keil uVision4 // 在3.3V的供电环境下,就能运行 // 波特率 115200 // 使…

PyTorch(六)网络模型

文章目录Log一、现有网络模型的使用及修改1. VGG① ImageNet 数据集下载② 模型加载③ 模型改造a. 添加一个线性层b. 插入一个线性层c. 修改一个线性层二、网络模型的保存与读取① 网络模型的保存a. 保存方式一b. 保存方式二② 网络模型的读取a. 读取方式一b. 读取方式二三、完…

微信公众号服务号配置对接在线客服系统教程

如果只需要实现微信公众号的关注自动回复,关键词自动回复功能,普通订阅号就可以 当需要对接实现公众号的模板消息提醒,模板消息与客服端H5的对接,访客在微信点击或扫码时获取到微信的昵称头像,需要网页授权功能。这种是…

Spring(一):Spring核心与设计思想(IoC、DI)

目录一、Spring是什么1.1 容器是什么?1.2 什么是IoC?1.3 理解Spring IoC1.4 DI是什么一、Spring是什么 我们这里所说的Spring指的是SpringFrameWork,是一个开源框架。Spring支持广泛的应用场景,它可以让Java企业级的应用程序开发…

k8s编程operator实战之云编码平台——②controller初步实现

文章目录1、工作空间镜像制作2、controller实现2.1 使用kubebuilder创建工程2.2 代码实现2.2.1 引入grpc2.2.2 实现CloudIdeServiceStatusInformer的实现CloudSpaceService定义方法CreateSpaceAndWaitForRunning方法GetPodSpaceInfo方法DeleteSpace方法GetPodSpaceStatus2.2.3 …

人才盘点的工具与方法有哪些?怎样做好人才盘点?

人才盘点是对组织和人才进行系统管理的一种流程。在此过程中,对组织架构、人员配比、人才绩效、关键岗位的继任计划、关键人才发展、关键岗位的招聘及关键人才的晋升和激励进行深入讨论,并制定详细的组织行动计划,确保组织以更加优化的结构和…

非零基础自学计算机操作系统 第1章 操作系统概述 1.5 操作系统的硬件环境 1.5.1 定时装置 1.5.2 堆与栈 1.5.3 寄存器

非零基础自学计算机操作系统 文章目录非零基础自学计算机操作系统第1章 操作系统概述1.5 操作系统的硬件环境1.5.1 定时装置1.5.2 堆与栈1.5.3 寄存器第1章 操作系统概述 1.5 操作系统的硬件环境 构建一个高效、可靠的操作系统,硬件需要提供哪些支持? 1…

MySQL数据库基本使用(一)-------登录及查看基本信息

1.MySQL登录命令 格式如下: mysql -h 主机名 -P 端口号 -u 用户名 -p密码例如: mysql -h localhost -P 3306 -u root -pabc123 # 这里我设置的root用户的密码是abc123注意: -p与密码之间不能有空格,其他参数名与参数值之间可以…

Spring Boot启动原理源码

Spring Boot启动原理源码 注意:这个springboot启动源码和springboot自动配置原理的源码是十分重要的,面试的时候要是问springboot,一般都会问这两个。 源码: SpringBoot 事假监听器发布顺序: 1.ApplicationStartingEvent 2.ApplicationEnvironmentPrepa…

springboot+mybatis配置多数据源实战

1.背景说明 2.配置多数据源步骤 2.1 项目结构变更 2.2 添加配置类 2.3 修改配置文件数据连接配置信息 1.背景说明一般一个项目中只会连接一个数据库.但是随着需求变更,会要求同一个项目中连接多个数据库,本文就讲一下如何在一个项目中对多…

usaco training刷怪旅 第一层第二题 Greedy Gift Givers

usaco training 关注我持续创作training题解 翻译有点奇葩,我就上原题目了,各位自己翻译吧QwQ A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts of money. Each of these friends might or might not give some m…

一种基于PCI总线的反射内存卡设计

一种基于PCI总线的反射内存卡设计 摘要: 对实时传输, 传统的以太网络由于传输协议开销的不确定性, 很难满足实时网络的要求, 实时网络是一种应用于高实时性要求的专用网络通信技术, 一般采用基于高速网络的共享存储器…