美文网首页
Mysql InnoDB下事物并发的理解

Mysql InnoDB下事物并发的理解

作者: 吕光朝 | 来源:发表于2019-07-24 19:33 被阅读0次

什么是事物:

       因为业务的需要,mysql需要引入事物的概念(此概念不做具体介绍)

事物并发产生的问题 :

       事物并发执行的时候会产生一些问题,如下

       脏读:一个事物读取到了例外一个事物没有提交的数据,如何此时例外一个事物回滚, 相当于读取到了脏数据

       不可重复读:一个事物在读取过程中 读取到了其他事物修改的数据,导致多次数据读取不一致

       幻读:一个事物在读取过程中 读取到了其他事物新增的数据,导致多次数据读取不一致

 解决方案:

        一:可以通过加锁的方式来解决上述问题,例如,读的时候加共享锁,此时其他事物无法修改相应的数据,写的时候加排他锁

禁止其他事物读写操作,但是这种做法性能较差

     二:基于性能的考虑 mysql InnoDB引擎实现了 多版本并发控制(MVCC),这是一种乐观锁的实现方式;MVCC 在读已提交 和 可重复读 2种隔离级别下工作;

           在MVCC中,读操作可以分成两类,快照读(Snapshot read)和当前读(current read)。快照读,读取的是记录的可见版本(可能是历史版本,即最新的数据可能正在被当前执行的事务并发修改),不会对返回的记录加锁;而当前读,读取的是记录的最新版本,并且会对返回的记录加锁,保证其他事务不会并发修改这条记录,所以说MVCC解决了不可重复读的问题,因为当前读读取的是最新的版本,所以还是会出现幻读的情况,

          Mysql通过间隙锁的方式解决了 幻读 的问题,一种锁定索引记录间隙,确保索引记录的间隙不变的加锁方式,间隙锁仅发生于检索条件有非唯一索引,RR级别下;唯一索引下 由于其唯一性,排序性没有间隙

       

相关文章

  • Mysql InnoDB下事物并发的理解

    什么是事物: 因为业务的需要,mysql需要引入事物的概念(此概念不做具体介绍) 事物并发产生的问题 : ...

  • MySQL并发和innodb_thread_concurrenc

    MySQL并发和innodb_thread_concurrency参数理解 测试环境:CPU:2颗8核内存:16G...

  • Mysql存储引擎Innodb小结

    innodb是mysql支持事务的存储引擎,也是当前mysql默认的存储引擎。innodb支持行级别锁,对并发性事...

  • 1. Mysql技术内幕-简介及InnoDB体系架构

    Mysql体系结构和存储引擎 Mysql体系结构 InnoDB存储引擎 InnoDB通过使用MVCC来获取高并发性...

  • Mysql索引优化

    存储引擎 InnoDB InnoDB是是Mysql默认的事务性存储引擎 InnoDB才有MVCC来支持高并发,并且...

  • MySQL之事物处理机制

    事物处理 MySql事物处理机制对于处理数据库并发操作有较大的帮助,大多数存储引擎像Innodb就支持数据库处理机...

  • mysql 面试题

    1、MySQL中myisam与innodb的区别,至少5点: InnoDB支持事物,而MyISAM不支持事物 In...

  • Mysql优化

    Mysql单进程多线程设计。 InnoDB优点5.5以后默认引擎行级锁支持事物更好的恢复性高并发下性能更好,对多核...

  • mysql innodb高并发基础-MVCC

    mysql innodb能高效运行,支撑高并发原因就是基于MVCC实现。 本文仅是简单介绍下MVCC原理,介绍事务...

  • Mysql--InnoDB记录存储结构

    具体细节 请去掘金购买《MySQL 是怎样运行的:从根儿上理解 MySQL》 InnoDB页简介 1.innodb...

网友评论

      本文标题:Mysql InnoDB下事物并发的理解

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