美文网首页
数据库并发处理-隔离级别

数据库并发处理-隔离级别

作者: 邵增卫 | 来源:发表于2021-11-02 10:24 被阅读0次

Mysql数据库有四种隔离级别,read-uncommitted, read-committedrepeatable-readserializable解决事务并发的脏读, 不可重复读以及幻读的问题。

脏读: 在一个事务中读取到其他事务未提交的数据
不可重复读: 在一个事务中,两次读取数据不一致(更新和删除)
幻读: 在事务两次读取数据的过程中,其他的事务插入了新的数据,导致两次读取的数据数量不一致(增加)

幻读和不可重复读最大的区别在于解决问题使用的锁机制不同,不可重复读使用的是行锁, 幻读需要使用区间锁和NextKey-Lock

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
读已提交(read-committed) 不会
可重复读(repeatable-read) 不会 不会
串行化(Serializable) 不会 不会 不会

读未提交: 可以读取其他事务未提交的数据,当其他事务失败,数据回滚,就会导致脏读
读已提交: 读取最新的镜像数据, 事务A在读取数据之后(未加锁),事务B对相关数据更新或者删除并且顺利提交之后,事务A会读取最新的数据,导致两次数据读取不一致,引起不可重复读问题
可重复读: 事务A读取当前的事务A当前的镜像,事务B对数据更新、删除、插入之后,事务A依然读取事务A当前镜像,所以可以避免不可重复读问题。(问题: 为什么还存在幻读问题??)
串行化: 事务A在结束之前,事务B不会开始执行,所以不会导致任何并发问题。

MVCC(多版本并发控制)

原理: 在数据行添加隐藏的两列创建版本号和删除版本号,每一个一次修改都会生成一个自增的版本号。
所以在查询时需要查询符合版本条件的数据create_version <= current_version < delete_version

相关文章

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

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

  • 数据库并发处理-隔离级别

    Mysql数据库有四种隔离级别,read-uncommitted, read-committed,repeatab...

  • 数据库隔离级别相关

    1.数据库隔离级别目前数据库MySQL 并发事务下,在不同的隔离级别下,可能会出现四个问题.分别是:脏写(Lost...

  • 数据库事务四种隔离级别

    定义:在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别。数据库事务的隔离级别有4个,由低到高依...

  • 关于Spring的事务Transactional,锁同步,并发线

    Spring事务传播机制和数据库隔离级别 在标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同 。...

  • MySQL InnerDB

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

  • mysql(innodb)事务和锁

    事务的四种隔离级别 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别。我们的数据库锁,也是为了...

  • 数据库事务隔离的四个级别

    数据库隔离级别是在数据库操作中,为了有效保证并发读取数据的正确性提出的。 隔离级别越高,越能保证数据的完整性和一致...

  • 面试BAT前先搞定这些常问的MySQL面试题

    1、事物的并发?事物隔离级别,每个级别会引发什么问题?MySQL默认是哪个级别? 事物应该彼此完全隔离,以避免并发...

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

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

网友评论

      本文标题:数据库并发处理-隔离级别

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