0
点赞
收藏
分享

微信扫一扫

并发事务问题与事务隔离级别

文章目录

1、什么是事务

学习并发事务之前,需要理解什么是事务:

事务四大特性(ACID):

2、并发事务所遇到的问题

2.1、脏读

事务B查询DB时,读取到事务A修改修改后的数据,但是事务A并没有提交事务
在这里插入图片描述

2.2、不可重复读

事务A读取DB后得到数据,然后事务B把数据修改后提交,最终事务A再次读取数据发现数据发生了变化!
在这里插入图片描述

2.3、幻读

当我们已经解决不可重复读问题后,事务A查询数据,发现并没有数据,紧接着事务B插入一条数据,事务A由于没查到数据,就要插入数据,结果由于主键冲突而失败,因为事务B已经插入数据了,最终事务A再次查询结果还是查询不到(解释:本来事务A就不该读到事务B插入的结果,如果能读到那就是2.2不可重复读问题了)
在这里插入图片描述

为了解决并发事务所引发的问题,在数据库中引入了事务隔离级别

3、事务隔离级别

隔离级别自上而下级别越来越高,性能越来越低,隔离级别分别是:

  1. 读未提交
  2. 读已提交
  3. 可重复读(默认)
  4. 串行化
    在这里插入图片描述

隔离级别常见操作:

# 查看事务隔离级别
SELECT @@TRANSACTION_ISOLATION;
# 设置事务隔离级别 SESSION:当前会话
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }

设置好对应的隔离级别就不会出现并发事务带来的各种问题

举报

相关推荐

0 条评论