当前位置: 代码迷 >> 综合 >> Mysql数据库-特性,隔离级别,脏读、不可重复读、幻读问题
  详细解决方案

Mysql数据库-特性,隔离级别,脏读、不可重复读、幻读问题

热度:53   发布时间:2023-10-25 18:20:32.0

参考文章
参考文章

特性:

ACID: 原子性,一致性,隔离性(4种隔离级别),持久性

隔离级别:

不同事务之间的隔离程度称为隔离级别,主要有以下四种。
AB两个事务

  • 读未提交: B事务可以读到A事务没有提交的数据
  • 读已提交: B事务只能读到A事务已经提交的数据
  • 可重复读: B事务只能读到A事务已经提交的数据,但是同一行的数据读取到的值是不会改变的。比如id为1的字段name值有jack改成了jams,A改了,且已经提交了,但是B读取到的还是jack。但是当A新增一行的时候,B是可以读到新增这一行的,所以会出现幻读的问题。
  • 串行化: 当A事务在对Person表进行操作操作的时候,B事务不能进行添加、更新删除操作,但是可以读取。
    级别从低到高,越高说明安全性越强,但是并发能力越弱。
    在这里插入图片描述

数据库事务可能并发的问题:

  • 脏读
  • 不可重复读
  • 幻读
    在这里插入图片描述

隔离级别解决并发的能力

在这里插入图片描述

总结:

四种不同的隔离级别,对应的是一个事务与另一个事务之间的隔离。
根据不同级别,当在操作同一个表的时候,查询出来的数据问题。
如当是串行化的时候,A事务开始之后,查询person表,那么B事务中有关person表的del、update、insert操作都不能干,要确保A事务不会出现脏读、不可重复读、幻读等问题出现。

  相关解决方案