【MySQL】事务四大特性ACID、并发事务问题、事务隔离级别


在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaEE
操作系统
Redis

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


MySQL

  • 一、事务四大特性ACID
    • 1.1 原子性
    • 1.2 一致性
    • 1.3 隔离性
    • 1.4 持久性
  • 二、并发事务问题
    • 2.1 脏读
    • 2.2 不可重复读
    • 2.3 幻读
  • 三、事务隔离级别
    • 3.1 脏读演示
    • 3.2 不可重复读演示
    • 3.3 可重复读演示

一、事务四大特性ACID

1.1 原子性

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

事务是一组操作,这组操作是不可分割的最小操作单元,表示这组操作的内容要么全部执行成功,如果有一个操作没有成功,那么这组操作全部执行失败。

1.2 一致性

  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。

例如在进行转账操作时,一个账户给另一个用户转账,不管这个操作最终成功,还是因为转账失败回滚,最后这两个账户的余额相加都是一致的。

1.3 隔离性

  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

隔离性指的是有若干个并发事务,比如有两个事务,事务1和事务2都在同时操作这个数据库,事务1去操作的时候不会影响并发的事务2的执行,事物2去操作的时候也不会影响并发的事务1去执行,这两个事务是在独立的环境下运行的。

1.4 持久性

  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

数据库当中的数据最终是存放在磁盘当中的,一个事务不管是操作成功提交了还是操作异常回滚了,最终对数据库的改变是永久的保留到磁盘中的。

二、并发事务问题

2.1 脏读

  • 一个事务读到另外一个事务还没有提交的数据。

有两个并发执行的事物,事务A要进行select和update操作,事务B执行select操作,它们操作的是同一个数据库,当事务A执行完update操作还没有提交时,事务B进行了select操作,这时就查出了事务A将要修改但还没有提交修改的数据,这被称为脏读。

2.2 不可重复读

  • 一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。

有两个并发事务,事务A有4个操作,第一个操作是select(id=1)一个数据,事务A在进行第二个操作时,事务B对事务A第一次查询的数据进行了修改,并且提交了这次修改,接着事务A进行第三个操作,依然是select(id=1),与第一个操作一样,但这次查到的数据发生了改变,这就是不可重复读。

2.3 幻读

  • 一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了”幻影”。

有两个并发事务,事务A进行了select(id=1)的操作,在提交前事务B进行了insert(id=1)的操作,并且提交完成,此时数据库当中已经有了id为1的数据,接下来事务A进行insert(id=1)的操作,此时会提示插入失败,因为事务B已经插入了id为1的数据,此时事务A再次进行select(id=1)的操作,但还是没有查到(已经解决了不可重复读的问题了),这就类似出现了幻觉,这个现象称之为幻读。

三、事务隔离级别

隔离级别脏读不可重复读幻读
Read uncommitted
Read committed(Oracle默认)×
Repeatable Read(MySQL默认)××
Serializable×××
  • 查看事务隔离级别
SELECT @@TRANSACTION_ISOLATION;

在这里插入图片描述

  • 设置事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL {Read uncommitted|Read committed|Repeatable Read|Serializable  } ;

3.1 脏读演示

  • Read uncommitted:

在这里插入图片描述


  • Read committed:

在这里插入图片描述


3.2 不可重复读演示


在这里插入图片描述


3.3 可重复读演示


在这里插入图片描述


在这里插入图片描述


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

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

相关文章

Zabbix监控系统详解2:基于Proxy分布式实现Web应用监控及Zabbix 高可用集群的搭建

文章目录 1. zabbix-proxy的分布式监控的概述1.1 分布式监控的主要作用1.2 监控数据流向1.3 构成组件1.3.1 zabbix-server1.3.2 Database1.3.3 zabbix-proxy1.3.4 zabbix-agent1.3.5 web 界面 2. 部署zabbix代理服务器2.1 前置准备2.2 配置 zabbix 的下载源,安装 za…

《Node.js+Express+MongoDB+Vue.js全栈开发实战》简介

今天介绍的这本书是《Node.jsExpressMongoDBVue.js全栈开发实战》。该书由清华大学出版社于2023年1月出版 外观 从书名故名思议,就是基于Node.jsExpressMongoDBVue.js来实现企业级应用全栈开发。 封面风格比较简约,插图是一张类似于罗马时代战车形象&…

微软10月补丁 | 修复103个漏洞,包括2个零日漏洞,13个严重漏洞

近日,微软发布了2023年10月的补丁更新,解决了其软件中的103个漏洞。 在这103个漏洞中,有13个的评级为严重漏洞,90个被评为重要漏洞。自9月12日以来,谷歌已经解决了基于chrome的Edge浏览器的18个安全漏洞。 这两个零日…

Puppeteer监听网络请求、爬取网页图片(二)

Puppeteer监听网络请求、爬取网页图片(二) Puppeteer监听网络请求、爬取网页图片(二)一、爬取需求二、实现讲解三、效果查看 一、爬取需求 首先打开浏览器,打开指定网站监听网站发出的所有请求,记录请求&a…

【AI视野·今日Robot 机器人论文速览 第五十一期】Tue, 10 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 10 Oct 2023 Totally 54 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers On Multi-Fidelity Impedance Tuning for Human-Robot Cooperative Manipulation Authors Ethan Lau, Vaibhav Srivastava, Sh…

docker应用记录总结

一、前言 docker这类部署工具,久而久之不使用非常容易忘记,甚至连操作命令都容易忘记。网上也有比较全的docker使用教程。这里做一个记录总结,纯属是温故知新。 二、docker部署应用 1、docker印象 docker首先让我想到的是是虚拟化技术&…

计算机毕业设计 高校实习信息发布网站的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

git介绍和安装、(git,github,gitlab,gitee介绍)、git工作流程、git常用命令、git忽略文件

1 git介绍和安装 2 git,github,gitlab,gitee介绍 3 git工作流程 4 git常用命令 5 git忽略文件 1 git介绍和安装 首页功能写完了---》正常应该提交到版本仓库---》大家都能看到这个---》 运维应该把现在这个项目部署到测试环境中---》测试…

A Better Finder Rename 12 for Mac——让重命名变得更简单

A Better Finder Rename 12 for Mac是一款专业的批量重命名工具,为您提供了快速、简单、可靠的重命名解决方案。无论您是否需要批量重命名文件、图像、音频或视频文件等,A Better Finder Rename 12 for Mac可以帮助您快速完成任务,节省宝贵的…

深入探索BP神经网络【简单原理、实际应用和Python示例】

人工神经网络(Artificial Neural Networks)是一种受到生物神经网络启发的机器学习模型,它的应用范围广泛,包括图像识别、语音识别、自然语言处理等领域。其中,BP神经网络(Backpropagation Neural Network&a…

Java开发-参数校验@NotEmpty、@NotBlank、@NotNull

大家好,我是小资。今天给大家说下参数校验。 标题中说的这三个注解所在的包路径为import javax.validation.constraints.*; 千万不要导错包哦,因为他们在好多包里都存在。开发只需引入Spring-web依赖就可以使用了。轻轻松松干掉多余的if-else。 下面我…

someip 入门

什么是someip? SomeIP(Scalable Service-Oriented MiddlewarE over IP)是一种基于以太网的通信协议,用于汽车领域的通信。它允许不同的汽车电子控制单元(ECUs)之间通过网络进行通信,以便在车辆内…

“小程序:改变电商行业的新趋势“

目录 引言1. 小程序的简介1.1 什么是小程序?1.2 小程序的优势 2. 小程序之电商演示1.注册微信小程序2.安装开发工具3.创建项目 3. 小程序之入门案例总结 引言 随着移动互联网的迅猛发展,小程序作为一种全新的应用形态,正在逐渐改变着传统电商…

数据结构--》解锁数据结构中树与二叉树的奥秘(二)

数据结构中的树与二叉树,是在建立非线性数据结构方面极为重要的两个概念。它们不仅能够模拟出生活中各种实际问题的复杂关系,还常被用于实现搜索、排序、查找等算法,甚至成为一些大型软件和系统中的基础设施。 无论你是初学者还是进阶者&…

Spring Cloud--Nacos+@RefreshScope实现配置的动态更新

原文网址:Spring Cloud--NacosRefreshScope实现配置的动态更新_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringCloud整合Nacos使用RefreshScope实现动态更新配置。 官网 Nacos Spring Cloud 快速开始 动态更新的介绍 动态更新的含义:修改应…

【09】基础知识:React组件的生命周期

组件从创建到死亡它会经历一些特定的阶段。 React 组件中包含一系列勾子函数&#xff08;生命周期回调函数 <> 生命周期钩子函数 <> 生命周期函数 <> 生命周期钩子&#xff09;&#xff0c;会在特定的时刻调用。 我们在定义组件时&#xff0c;会在特定的生…

挖机技术哪家强

挖机技术哪家强&#xff0c;中国山东找蓝翔&#xff0c;开挖机是我曾经的梦想&#xff0c;每个男人心中都有一台自己的挖机&#xff0c;近半年做的项目就是关于挖机销售CRM&ERP系统&#xff0c; 今天我们聊聊关于挖机的基本知识。 注&#xff1a;此文并非广告&#xff0c;…

Mybatis学习笔记注解/xml映射/动态SQL%%%Mybatis教程

介绍 Mybatis 是一款优秀的持久层框架&#xff0c;用于简化 JDBC 的开发 MyBatis中文网 Mybatis 入门 快速入门 步骤 创建 SpringBoot 工程、数据库表 user、实体类 User引入 Mybatis 相关依赖&#xff0c;配置 Mybatis&#xff08;数据库连接信息&#xff09;编写 SQL 语…

金x软件有限公司安全测试岗位面试

目录 一、自我介绍 二、你是网络空间安全专业的&#xff0c;那你介绍下网络空间安全这块主要学习的东西&#xff1f; 三、本科专业是网络工程&#xff0c;在嘉兴海视嘉安智城科技有限公司实习过&#xff0c;你能说下干的工作吗&#xff1f;&#xff08;没想到问的是本科实习…

二十四、【参考素描三大面和五大调】

文章目录 三种色面(黑白灰)五种色调 这个可以参考素描对物体受光的理解&#xff1a;素描调子的基本规律与素描三大面五大调物体的明暗规律 三种色面(黑白灰) 如下图所示&#xff0c;我们可以看到光源是从亮面所对应的方向射过来的,所以我们去分析图形的时候&#xff0c;首先要…