美文网首页
MySQL InnoDB 事务的隔离性

MySQL InnoDB 事务的隔离性

作者: 如梦又似幻 | 来源:发表于2020-02-21 22:27 被阅读0次

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

2.事务在启动时会拍一个快照,这个快照是基于整个库的.
基于整个库的意思就是说一个事务内,整个库的修改对于该事务都是不可见的(对于快照读的情况)
如果在事务内select t表,另外的事务执行了DDL t表,根据发生时间,要嘛锁住要嘛报错(参考第六章)

3.事务是如何实现的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,才返回数据

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

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

相关文章

  • mysql事务隔离级别的实现原理

    mysql事务隔离级别的实现原理 mysql innodb中的四种事务隔离级别[https://www.jians...

  • mysql的事务隔离级别

    mysql中一共有4种隔离级别(因为只有InnoDB引擎支持事务,所以也可以说是InnoDB的事务隔离级别) 隔离...

  • MySQL InnoDB 事务的隔离性

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

  • MySQL

    MySQL数据库的存储引擎InnoDB和MyIASM 以下都是以InnoDB,Mysql默认事务隔离级别为REPE...

  • Mysql 隔离级别与锁的关系

    Innodb中的事务隔离级别和锁的关系MySQL加锁处理分析

  • MySQL会发生死锁吗?

    MySQL的InnoDB引擎事务有4种隔离级别,主要是为了保证数据的一致性。 InnoDB引擎提供了行级锁,表锁。...

  • mysql(InnoDB)事务隔离

    隔离性产生的相关问题 1、丢失更新 多个事务同时修改某行数据,以致于一些事务的修改被丢失 2、脏读 事...

  • MySQL存储引擎

    InnoDB存储引擎 mysql默认事务性引擎。 支持事务 由于InnoDB性能及奔溃自动恢复特性,在其他非事务性...

  • MySQL事务隔离级别

    [toc] 前言 这篇文章将会总结MySQL中的innodb的事务隔离级别,以及幻读、脏读、不可重复读。 事务隔离...

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

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

网友评论

      本文标题:MySQL InnoDB 事务的隔离性

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