美文网首页
7、事务隔离机制

7、事务隔离机制

作者: 内卷星球 | 来源:发表于2020-04-09 09:15 被阅读0次

RC(Read Committed,读提交)
RR(Repeatable Read,可重复读)

  1. innodb支持RC和RR隔离级别实现是用的一致性视图(consistent read view)

  2. 事务在启动时会拍一个快照,这个快照是基于整个库的.
    基于整个库的意思就是说一个事务内,整个库的修改对于该事务都是不可见的(对于快照读的情况)

增删改数据(DML),修改表结构的操作(DDL)

如果在事务内select t表,另外的事务执行了DDL t表,根据发生时间,要嘛锁住要嘛报错

  1. 事务是如何实现的MVCC呢?
    (1)每个事务都有一个事务ID,叫做transaction id(严格递增)
    (2)事务在启动时,找到已提交的最大事务ID记为up_limit_id。
    (3)事务在更新一条语句时,比如id=1改为了id=2.会把id=1和该行之前的row trx_id写到undo log里,
    并且在数据页上把id的值改为2,并且把修改这条语句的transaction id记在该行行头
    (4)再定一个规矩,一个事务要查看一条数据时,必须先用该事务的up_limit_id与该行的transaction id做比对,
    如果up_limit_id>=transaction id,那么可以看.如果up_limit_id<transaction id,则只能去undo log里去取。去undo log查找数据的时候,也需要做比对,必须up_limit_id>transaction id,才返回数据

  2. 什么是当前读,由于当前读都是先读后写,只能读当前的值,所以为当前读.会更新事务内的up_limit_id为该事务的transaction id

  3. 为什么rr能实现可重复读而rc不能,分两种情况
    (1)快照读的情况下,rr不能更新事务内的up_limit_id,
    而rc每次会把up_limit_id更新为快照读之前最新已提交事务的transaction id,则rc不能可重复读
    (2)当前读的情况下,rr是利用record lock+gap lock来实现的,而rc没有gap,所以rc不能可重复读

相关文章

  • 7、事务隔离机制

    RC(Read Committed,读提交)RR(Repeatable Read,可重复读) innodb支持RC...

  • 有关Spring事务,看这一篇就足够了

    本文将按照声明式事务的五个特性进行介绍: 事务传播机制 事务隔离机制 只读 事务超时 回滚规则 Spring事务传...

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

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

  • 事务隔离机制 spring事务传播机制

    数据库事务隔离级别 1.read_uncommitid 脏读,读取未提交的数据2.Read_commited 读取...

  • MySQL多版本并发控制 - MVCC

    并发控制 实现事务隔离的机制,称之为并发控制 所谓并发控制,就是保证并发执行的事务在某一隔离级别上的正确执行的机制...

  • InnoDB 事务隔离机制

    1、事务四大特性:ACID Atomicity 原子性:事务的操作要么一起成功,要么一起失败; Consisten...

  • Spring事务

    1.事务的传播机制 2.事务隔离机制 3.只读 4.事务超时 5.回滚规则 1.事务的特性: 原子性:事务是一个原...

  • MySQL相关(一)——— 事务和锁

    事务的隔离级别和锁机制 【1】InnoDB 事务隔离级别和锁 【2】脏读、不可重复读、幻读 mysql 相关 常用...

  • 问题记录

    面试题记录 spring spring事务传播机制和隔离级别? spring支持的事务类型? 什么是 Spring...

  • MySQL的事务隔离机制

    PPT 一、什么是MySQL的事务? 当多个用户访问同一份数据时,一个用户再更改数据的过程中可能有其他用户同时发起...

网友评论

      本文标题:7、事务隔离机制

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