MYSQL 事物隔离级别的区别与现象

news2024/10/8 9:37:46

        事物的ACID属性本章不再赘述,本章主要描述事物的隔离级别及隔离级别导致的现象,日常工作中该如何选择MYSQL的隔离级别。

        MYSQL事物的隔离级别及各隔离级别存在的问题如下:

隔离级别/问题脏读不可重复读幻读
读未提交(Read-Uncommitted)
读已提交(Read-Committed)
可重复读(Repeatable-Read)

序列化(Serializable)

        查看数据库隔离级别SQL,默认即为:可重复读        

        下面以实际案例列举各隔离级别出现的问题,创建如下表并插入数据:

CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `balance` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;


INSERT INTO `test`.`account` (`name`, `balance`) VALUES ('lilei', '1000');
INSERT INTO `test`.`account` (`name`, `balance`) VALUES ('hanmei', '1000');
INSERT INTO `test`.`account` (`name`, `balance`) VALUES ('lucy', '1000');

1,读未提交(Read-Uncommitted)

       1.1,navicate打开两个查询连接,且把两个连接的事物隔离级别设置为读未提交,模拟两个事物,如图:

        1.2,事物一开启事物并更新数据 id = 1的数据,但不提交:

        此时id = 1 的数据未改变:

        1.3,事物二开启事物并查询 id = 1的数据:

        1.4,结论

1,事物一更新数据的事物未提交,但事物二已经读取了新数据,如果事物一的更新回滚,则事物二出现【脏读】;

2,事物一未提交事物,插入一条新数据。事物一的插入数据事物未提交,但事物二已可读取到新插入的数据,如果事物一的插入事物回滚,则事物二出现【幻读】。

3,事物一提交或不提交事物,再次更新id=1的数据,将1500该为2000。事物二同一事物中再次查询,结果为2000,此时事物二出现【不可重复读】;

2,读已提交(Read-Committed)

        2.1,navicate打开两个查询连接,且把两个连接的事物隔离级别设置为读已提交,模拟两个事物,如图:

        2.2,事物二开启事物并查询 id = 2 的数据,查询后不提交查询事物,如下图:

        2.3,事物一开启事物,更新 id = 2的数据,不提交事物,如下图:

        未提交事物,所以此时id=2的数据并未改变:

        2.4,事物二在同一事物中查询id=2的数据,

        查询结果同第一次查询一样,即【读已提交】已解决 【读未提交】的问题。

        2.5,事物一提交,id=2的数据变化,如图:

        2.6,事物二在同一事物中查询,如图:

        2.7,结论

1,事物一增/删/改数据的事物未提交,不论事物一操作多少次,事物二都不会查询到新数据,事物二只会查询到事物一提交事物后的数据。即事物二不会出现【脏读】;

2,事物二在同一查询事物中,事物一对同一数据进行多次更新并提交事物,事物二查询结果可能不一样,即事物二出现【不可重复读】;

3,假如事物二查询表的数据量count(*)=5,事物一新增一行并提交事物,事物二再次查询count(*)=6,事物一开启新事物:删除一条数据并提交事物,事物二再次查询count(*)=5.即事物二在同一查询事物中出现【幻读】。

3,可重复读(Repeatable-Read)

        3.1,navicate打开两个查询连接,且把两个连接的事物隔离级别设置为读已提交,模拟两个事物,如图:

        3.2,事物二开启事物并查询 id = 3 的数据,查询后不提交查询事物,如下图:

        3.3,事物一开启事物,更新 id = 3的数据,set balance = 4000,不提交事物。事物二同一事物中查询id=3,查询结果balance=1000,表明【可重复读】和【读已提交】一样,解决了【读未提交】的脏读问题。

        事物一提交事物,id=3的数据变化,如图:

        3.4,事物二在同一事物中查询id=3的数据,

        查询结果仍然是1000,即同一事物中,查询同一条数据结果一致。且在事物二的同一事物中,不论事物一对id=4的数据做多少次更改,事物二的查询结果都一致,解决了【读已提交】的问题。

        3.5,结论

1,事物一增/删/改数据的事物未提交,不论事物一操作多少次,事物二都不会查询到新数据,事物二只会查询到事物一提交事物后的数据。即事物二不会出现【脏读】;

2,事物二在同一查询事物中,事物一对同一数据进行多次更新并提交事物,事物二查询结果可能一样,即事物二不会出现【不可重复读】;

3,假如事物二查询表的数据量:select count(*) from account;  count(*)=5,事物一新增一行并提交事物,事物二再次查询数据量: select count(*) from account for update;  count(*)=6两次的查询语句不通,第二次加了读锁,即当前读,事物二在同一查询事物中出现【幻读】。

4,序列化(Serializable)

        序列化的操作采取获取锁的方式,不论查询,还是增/删/改,都将获取操作行的锁,其他操作需等待事物提交后获取锁才能进行操作。虽隔离级别最高,但性能太低,日常开发中基本不会用到。

        

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

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

相关文章

JS 入门

文章目录 JS 入门一、JS 概述1、JS 特点2、JS 组成3、JS 初体验4、HTML引入JS 二、JS 基础语法1、变量声明2、基本数据类型3、引用数据类型1)数组2)对象3)函数4)null 4、运算符5、条件判断6、循环语句 三、JS 函数0、JS 函数特点1…

知识图谱入门——11:构建动态图谱渲染应用:Vue3与Neo4j的集成与实践

在知识图谱与大数据技术领域,构建动态图谱是一项非常重要的任务。这篇博客将带你深入了解如何利用Vue.js、D3.js以及Neo4j,开发一个能够实时渲染图谱节点和关系的应用。我们将从零开始,介绍如何搭建开发环境、安装依赖、与Neo4j数据库交互、到…

获取yolov8自带的数据集并开始训练

今天小编带大家学习一下YOLOv8 配置文件,用来定义不同数据集的参数和配置。这些文件包含了关于每个数据集的路径、类别数、类别标签等信息,帮助模型正确地加载和解析数据集,以便进行训练和推理。 具体来说,这些 YAML 文件的作用如…

各省份技术市场成交额数据(2001-2022年)

数据名称:各省份技术市场成交额数据数据年份:2001-2022年数据来源:《中国统计年鉴》字段说明: id:数据条目编号省份:中国各省份年份:2001-2022年技术市场成交额(万元):表示该省份在特…

基于Springboot vue的流浪狗领养管理系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…

Win10 IDEA连接虚拟机中的Hadoop(HDFS)

获取虚拟机的ip 虚拟机终端输入 ip a关闭虚拟机防火墙 sudo ufw disable修改Hadoop的core-site.xml文件 将localhost修改为虚拟机局域网IP # 位置可能不一样,和Hadoop安装位置有关 cd /usr/local/hadoop/etc/hadoop vim core-site.xmlIDEA 连接 创建Maven项目…

软考系统分析师知识点四:操作系统基本原理

前言 今年报考了11月份的软考高级:系统分析师。 考试时间为:11月9日。 倒计时:33天。 目标:优先应试,其次学习,再次实践。 复习计划第一阶段:扫平基础知识点,仅抽取有用信息&am…

如何删除或减少pagefile.sys?

您是否曾在计算机上遇到过一个名为 pagefile.sys 的超大文件? 许多 Windows 用户想知道 pagefile.sys 的用途以及如何在不影响系统性能的情况下有效地管理它。 本文将帮助您了解 pagefile.sys 是什么、它为什么会变大以及如何安全地管理它的大小。 什么是 pagefi…

基于UDP协议的网络通信

和TCP协议不同的是,UDP协议不需要进行稳定的连接即可直接对数据进行收发,即面向非连接的。所以UDP的应用场景在音视频流传输、在线游戏以及网络聊天室等实时传输需求大的背景。因为不需要建立连接,UDP的网络编程模型就比TCP简单许多。 接收端…

Qt - ui界面点击加载一段时间后闪退

Qt - ui界面点击加载一段时间后闪退 解决方案: 该路径下删除 widgetbox6.8.xml 文件即可,然后重新打开 QT 就可以成功打开 UI 界面了

【2024最新】基于springboot+vue的交流互动系统lw+ppt

作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…

Spring Boot框架下的足球青训俱乐部管理

2 相关技术简介 2.1 Java技术 Java是一门伟大的纯面向对象的编程语言和编程语言。同时,它还是Java语言从嵌入式开发到企业级开发的平台。Java凭借其一次编译,任何地方执行的优点,使得盛行的web应用程序有大量的Java编译,很好地支…

【AIGC】ChatGPT提示词Prompt高效编写模式:结构化Prompt、提示词生成器与单样本/少样本提示

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯结构化Prompt (Structured Prompt)组成元素应用实例优势结论 💯提示词生成器 (Prompt Creator)如何工作应用实例优势结论 💯单样本/少样本提示 (O…

LeetCode讲解篇之746. 使用最小花费爬楼梯

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 爬到第i层的最小花费 min(爬到第i - 1层的最小花费 从第i - 1层向上爬的花费, 爬到第i - 2层的最小花费 从第i - 2层向上爬的花费) 设f[i]为爬到第i层的最小花费 则f[i] min(f[i - 1] cost[i - 1], f[i -…

红外变电站分割数据集,标注为json格式,总共有5类,避雷器(289张),绝缘子(919张),电流互感器(413张),套管(161张),电压互感器(153张)

红外变电站分割数据集,标注为json格式,总共有5类 避雷器(289张),绝缘子(919张),电流互感器(413张),套管(161张)&#xff0…

IDEA:增加类注释模板和方法注释模板

文章目录 概要配置类注释模板配置方法模版 概要 配置类注释和方法注释 配置类注释模板 点击setting->Editor->File and Code Templates,然后找到Class,如下图: 注意勾掉Reformat according to style,否则会格式化。 注…

Revisiting Graph-Based Fraud Detection in Sight of Heterophily and Spectrum

AAAI24 推荐指数: #paper/⭐ 领域:异常检测 摘要 这篇文章是关于一种新型的基于图神经网络(GNN)的欺诈检测方法,称为SEC-GFD(Spectrum-Enhanced and Environment-Constrainted Graph Fraud Detector&…

黑马JavaWeb开发跟学(十二)SpringBootWeb案例

黑马JavaWeb开发跟学十二.SpringBootWeb案例 案例-登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令…

第100+27步 ChatGPT学习:概率校准 Temperature Scaling

基于Python 3.9版本演示 一、写在前面 最近看了一篇在Lancet子刊《eClinicalMedicine》上发表的机器学习分类的文章:《Development of a novel dementia risk prediction model in the general population: A large, longitudinal, population-based machine-learn…

基于PHP猫咖私人影院系统【附源码】

效果如下: 系统首页界面 用户注册界面 包厢信息界面 零食信息界面 管理员登录界面 包厢预订界面 猫咪信息界面 研究背景 近年来,随着生活品质的提升和个性化消费需求的增长,猫咖和私人影院等新兴休闲娱乐方式逐渐受到年轻人的青睐。猫咖结合…