首页 > 其他分享 >事务隔离级别

事务隔离级别

时间:2023-06-06 21:44:20浏览次数:27  
标签:事务 隔离 幻读 SessionA SessionB 级别

一、数据并发问题

针对事务的隔离性和并发性,访问相同数据的事务在不保证串行执行的情况下会出现的问题

1、脏写:对于两个事务SessionA、SessionB,如果事务SessionA修改了另一个未提交事务SessionB修改过的数据,那就意味着发生了脏写。

2、脏读:对于两个事务SessionA、SessionB,SessionA读取了已经被SessionB更新但还没被提交的字段,之后若SessionB回滚,SessionA读取的内容就是临时且无效的。

3、不可重复读:对于两个事务SessionA、SessionB,SsessionA读取了一个字段,然后SessionB更新了该字段。之后SessionA再次读取同一个字段,值就不同了,意味着发生了不可重复读。

4、幻读:对于两个事务SessionA、SessionB,SessionA从表中读取了一个字段,然后SessionB在该表中插入了一些新的行,之后,如果SessIonA再次读取同一个表,就会多出几行。那就意味着发生了幻觉。

二、SQL中的四种隔离级别

严重程度:

脏写 > 脏读 > 不可重复读 > 幻读:都解决并发性会下降

舍弃一部分隔离性换取一部分性能:设置隔离级别,级别越低,并发问题越多

1、读未提交:在该隔离级别,所有的事务都可以看到其它未提交事务的执行结果。不能避免脏读、不可重复读、幻读

2、读已提交:一个事务只能看见已经提交事务所做的改变。可以避免脏读。但不可重复读、幻读问题仍然存在

3、可重复读:事务A在读到一条数据后,此时事务B对该数据进行了修改并提交,那么事务A再次读该数据,读到的还是原来的内容。可以避免脏读、不可重复读,但幻读问题仍然存在。

4、可串行化:确保事务可以从一个表中读取相同的一行。在这个事务执行期间,禁止其他事务对该表执行插入、更新、删除操作。所有的并发问题都可解决,但性能十分低下。能避免脏读、不可重复读、幻读。

四种隔离级别都不允许脏写的问题。

不同隔离级别有不同的锁和并发机制,隔离级别越高并发性越差。

 

查看事务的隔离级别:select @@transaction_isolation

设置隔离级别是:GLOBAL(全局范围影响):当前已经存在的会话无效。只对执行完该语句之后产生的会话起作用

SESSION(会话范围影响):对当前会话的所有后续的事务有效。即在事务中间开启,不影响当前正在执行的事务,但对后续的事务有影响。

 

标签:事务,隔离,幻读,SessionA,SessionB,级别
From: https://www.cnblogs.com/fxzm/p/17461810.html

相关文章

  • 分布式事务-本地事务
    一、本地事务1、事务的基本性质数据库事务的几个特性:原子性(Atomicity)、一致性(Consistency)、隔离性或独立性(isolation)、持久性(Durability),简称就是ACID。原子性:一系列的操作整体不可拆分,要么同时成功,要么同时失败。一致性:数据在事务的前后,业务整体一致。转账:A:1000;B......
  • Spring框架中事务控制的运行原理
    PhotobyTomaszFilipekfromPexels:https://www.pexels.com/photo/nature-photography-of-flower-field-1646178/SpringTransaction基本介绍我们在日常开发中经常使用Spring框架来实现事务管理。事务管理是指在执行一系列操作时,保证这些操作要么全部成功,要么全部失败,不......
  • 如何实现Java类隔离加载?
    一什么是类隔离技术只要你Java代码写的足够多,就一定会出现这种情况:系统新引入了一个中间件的jar包,编译的时候一切正常,一运行就报错:java.lang.NoSuchMethodError,然后就哼哧哼哧的开始找解决方法,最后在几百个依赖包里面找的眼睛都快瞎了才找到冲突的jar,把问题解决之后就开始......
  • 分布式事务的解决方案及中间件
    方案一:XA两阶段提交方案是一种比较重的操作,其中有有以下三个角色:事务管理器(TM)、事务协调者(TC)、资源管理器(RM),资源锁定时间长,效率低。方案二:TCC采用冻结预留的方式锁定资源,开发量较大,常用于资金交易类的场景。方案三:本地消息表严重依赖消息表来管理事务,并不适用高......
  • Redis 的事务
    1.Redis的事务一般来说,常见的关于MySQL的事务的定义,无非是把一组数据库命令放在一起执行,保证操作原子性,要么同时成功,要么同时失败。但是Redis的事务跟MySQL的事务有一点点区别,Redis的事务允许把一组redis命令放在一起,把命令进行序列化,然后一起执行,但是Redis只保......
  • GaussDB数据库事务介绍
    前言随着大数据和互联网技术的不断发展,数据库管理系统的作用越来越重要,实现数据的快速读写以及保证数据的安全性和完整性成为企业在选择数据库技术时最为关注的问题之一。事务是保证数据一致性和完整性的关键机制之一,因此事务管理在数据库技术中占据了极为重要的位置。在这里我们将......
  • 2023年最新sentinel-dashbord部署安装(保姆级别)
    目录Sentinel-dashboard安装下载前景提要一、构建环境二、下载安装与配置1、进入百度搜索:Sentinel或访问地址:面向云原生微服务的高可用流控防护组件2、进入git主界面,然后找到如图位置(此处为各个发布版本)。3、看到版本信息,找到下载的位置进行下载就可以了。4、下载后在本地的盘中......
  • AH8669_交流AC220V降压转5V 300MA左右非隔离电源方案
    AH8669是一颗低成本的非隔离开关高性能交流转直流的转换器降压芯片,内部集成650V高耐压功率MOSFET额定700MA电流输出,非常适应于消费类的小家电控制模块以及给MCU供电和智能插座的家用电器上,交流转12V外围元件少,电路简单,内部集成软启动电路具有多功能保护有过载保护、过压保护、......
  • Mysql:事务
    事务特性事务的特性:acid。原子性(重要)事务内的一组操作为原子操作,要么全部成功,要么全部失败。在实际业务如转账,就必须保证一方数目多了一方少了,数目平衡。一致性(面试常问)事务成功或失败的结果必须符合业务逻辑。还是以转账为例,A转给B100块,成功就A少100,B多100,失败就双方金额该......
  • 2023最新IntellJ IDEA诺依SpringCloud开发部署文档(保姆级别)
    目录若依RuoYiv3.6.2部署文档一、环境构建二、模块描述三、部署后端1、下载到本地。2、MySQL导入数据。3、Nacos修改(1)保证本地Nacos下载安装成功,修改本地Nacos的application.properties。(2)启动本地的Nacos.4、启动本地的Redis5、启动如下模块四、部署前端1、保证Node安装没有......