美文网首页
图示关系型数据库事务隔离级别可能存在的“数据一致性问题”

图示关系型数据库事务隔离级别可能存在的“数据一致性问题”

作者: joefit | 来源:发表于2018-03-28 09:48 被阅读39次

数据库的事务隔离级别其实是“可用性”“数据一致性”的一场博弈——隔离级别的程度越高,数据一致性做的越好,但可用性在降低。

事务的四种隔离级别.png

这里的“数据一致性”是指:在一个事务中,同一条sql查询语句,多次读取,所得数据没有变化(没有受到其他事务的干扰)。

下面我们用图示的方式来描述不同的事务隔离级别可能出现的“数据一致性”问题:

我们用一条水平线来代表时间轴,用两个长矩形来分别代表两个事务,其中矩形在时间轴上重叠的部分则代表其并行特征(当然,在实际使用中未必只有并行的两个事务,但两个事务足以说明问题)。
两个只读事务,不存在数据不一致的问题,不存在探讨价值;同样,两个只写事务,不存在对数据的使用过程,也不存在数据不一致的问题。

脏读与不可重复读
事务的并发场景.png

如上图,事务一将‘张三’的总额在原来的基础上增加10,事务二在事务一提交前后分别查询了一次‘张三’的总额;那下面用图示的方式解释会出现什么问题。


image.png
幻读
可重复读--事务场景演示.png

如上图,事务二中是不可能出现update和delete操作的,因为不可重复读的隔离级别会对事务一第一次读取到的数据加行锁,所有事务一时间范围内事务二的update和delete操作会处于锁等待状态,直到事务一执行完毕(当然,有可能因锁超时而被数据库放弃执行)。

如上图,事务一的两次读取结果也不同,实时上也是一种“不可重复读”,但与上文中提到的不可重复读有区别的地方在于--两次读取到的数据集合不再是同样的数据行记录;所以,习惯上称这种现象叫--幻读。

总结一下
不同事务隔离级别可能出现的数据一致性问题.png

相关文章

  • 05.白话MySQL MVCC

    事务特性 大家都知道关系型数据库事务的特性:ACID 不同的隔离级别,存在着不同问题 MySQL默认的隔离级别是R...

  • 图示关系型数据库事务隔离级别可能存在的“数据一致性问题”

    数据库的事务隔离级别其实是“可用性”和“数据一致性”的一场博弈——隔离级别的程度越高,数据一致性做的越好,但可用性...

  • SQL必知必会(事务的隔离级别)

    事务并发处理可能存在的异常都有哪些? 在了解数据库隔离级别之前,我们需要了解设定事务的隔离级别都要解决哪些可能存在...

  • 面试官:为什么Redis的事务不支持回滚

    对于关系型数据库来说,事务这个面试的时候最开头的就是什么是事务?事务的ACID,事务的隔离级别,当说完可能就讲什么...

  • MySQL InnerDB

    事务隔离级别 所谓隔离级别,就是在数据库事务中,为保证并发数据读写的正确性而提出的定义。每种关系型数据库都提供了各...

  • Hibernate事务与并发问题处理(乐观锁与悲观锁)----

    目录 一、数据库事务的定义 二、数据库事务并发可能带来的问题 三、数据库事务隔离级别 四、使用Hibernate设...

  • MySQL_tx_isolation

    事务隔离级别 一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、...

  • 理解:事务的隔离级别

    一、数据库事务的ACID属性二、事务的隔离级别三、读写异常四、事务隔离级别与读写异常的关系五、MYSQL实践演示六...

  • MySQL事务隔离级别和实现原理,看这一篇就够了!!!

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么...

  • 2019-01-18

    1.MySQL事务隔离级别:事务隔离级别,解决什么并发问题,以及存在什么并发问题 (1)READ_UNCOMMIT...

网友评论

      本文标题:图示关系型数据库事务隔离级别可能存在的“数据一致性问题”

      本文链接:https://www.haomeiwen.com/subject/jkebzxtx.html