当前位置: 首页 > news >正文

MySQL:事务隔离级别详解

        事务一共有四个特性:原子性、隔离性、持久性、一致性。简称ACID。本文所将就是其中的隔离性。

1、事务中因为隔离原因导致的并发问题有哪些?

脏读:当事务A对一个数据进行修改,但这个操作还未提交,但此时事务B就已经读取到了这个修改后的数据,并依据这个修改后的数据进行接下来的操作。这就是脏读。

不可重复读:当事务A读取数据,然后对这个数据进行操作,然后再操作期间事务B对这个数据进行了修改,则等事务A再次读取这个数据时,和一开始读取到的值并不一样,这就是不可重复读。

幻读:幻读和不可重复读有点类似,幻读是事务A对表中所有属“猪”的人删掉,而此时事务B对表中查入一条属“猪”的人的数据,并进行提交,此时事务A就会以为出现幻觉了,没有进行删除操作。

脏读是对未提交的数据的读取,而不可重复读和幻读都是对已提交数据的读取。不可重复读的重点是修改,幻读的重点在于新增或者删除。

2、事务中的隔离级别

  • READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读

  • READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生

  • REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。(MySQL默认级别

  • SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读

隔离级别脏读不可重复读幻影读
READ-UNCOMMITTED
READ-COMMITTED×
REPEATABLE-READ××
SERIALIZABLE×××

3、修改隔离级别

开启事务:

start transaction;

结束事务:

commit;  或者  rollback;

查看隔离级别

select @@transaction_isolation;

修改隔离级别

set session transaction isolation level read committed;  #设置为读已提交

http://www.lryc.cn/news/289382.html

相关文章:

  • golang 根据URL获取文件名
  • 【Javaweb程序设计】【C00163】基于SSM房屋中介服务平台(论文+PPT)
  • ES文档索引、查询、分片、文档评分和分析器技术原理
  • element plus使用问题
  • 洛谷p1036选数
  • 【JavaSE篇】——数组的定义与使用
  • HCS 华为云Stack产品组件
  • 四、MySQL之增删改
  • MQ面试题之Kafka
  • 2023年CSDN年底总结-独立开源创作者第一年
  • hardware simulation——编译框架优化
  • Leetcode刷题笔记题解(C++):1971. 寻找图中是否存在路径
  • ARM常用汇编指令
  • kali系统入侵电脑windows(win11系统)渗透测试,骇入电脑教学
  • 力扣hot100 矩阵置零 标识位
  • Android App开发-简单控件(3)——常用布局
  • Linux使用二进制包安装MySQL
  • 【vue3-pbstar-admin】一款基于vue3和nodejs的简洁后台管理系统
  • 顺序表和链表【数据结构】【基于C语言实现】【一站式速通】
  • SpringBoot 有什么优点?
  • 扫地机器人(二分算法+贪心算法)
  • Unity中创建Ultraleap 3Di交互项目
  • 【Matlab】音频信号分析及FIR滤波处理——凯泽(Kaiser)窗
  • C数据类型
  • JAVA和Go的不解之缘
  • (免费领源码)java#SSM#MySQL汽车车辆管理系统68424-计算机毕业设计项目选题推荐
  • 25考研每日的时间安排
  • 小程序直播项目搭建
  • 《Python 简易速速上手小册》第10章:Python 项目实战(基于最新版 Python3.12 编写)
  • 防御保护第六天笔记