innodb的mvcc

    一致性的非锁定读(consisten nonlocking read)是指innodb存储引擎通过行多版本控制(multi versioning)的方式来读取当前行时间数据库中行的数据

   innodb的读又分为快照读和当前读,其中select操作基本上是快照读,不加锁,

   当前读则包括:insert/update/delete以及select---for update和select---in share mode,当前读是要加锁的,根据隔离级别的不同,所加的锁也不同

   在事务隔离级别READ COMMITTED和REPEATABLE READ(innodb存储引擎的默认事务隔离级别)下,innodb存储引擎使用非锁定的一致性读。然而,对于快照数据的定义却不相同。在READ COMMITTED事务隔离级别下,对于快照数据,非一致性读总是读取被锁定行的最新一份快照数据。而在REPEATABLE READ事务隔离级别下,对于快照数据,非一致性读总是读取事务开始时的行数据版本

时间: 2024-10-28 13:50:56

innodb的mvcc的相关文章

高性能的MySQL(1)锁和MVCC

一.MySQL逻辑架构 二.锁 1.读写锁 读锁是共享的,是互相不阻塞的,多个客户在同一时间读取同一资源,互补干扰.写锁是排他的,会阻塞其他的写锁和读锁. 2.隐式和显式锁定 隐式:InnoDB,在执行事务过程中会自动加锁,除非执行COMMIT或ROLLBACK时锁会自动释放. 显式:可以使用SELECT...LOCKINSHAREMODE||SELECT...FORUPDATE生成锁 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.c

【转】Innodb中的事务隔离级别和锁的关系

申明: 本文转自Innodb中的事务隔离级别和锁的关系,解决了我关于锁.事务隔离的一些误解和疑问.在高并发系统中,数据库对高并发的支持是非常重要的一个方面,本文主要描述高并发场景下,数据库如何保证数据一致性(同时保证良好的性能). 前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式.同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力.所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在.这里通过

MySQL · 引擎特性 · 基于InnoDB的物理复制实现

最近有幸前去美国参加Percona Live 2016会议并分享了我们最近在MySQL复制上所做的工作,也就是基于InnoDB的物理复制.会后很多小伙伴私信我说分享的PPT太内核了,不太容易理解.因此本文主要针对分享的内容进行展开描述,希望能对大家有所帮助. 背景知识 在开始之前,你需要对InnoDB的事务系统有个基本的认识.如果您不了解,可以参考我之前的几篇关于InnoDB的文章,包括InnoDB的事务子系统,事务锁,redo log,undo log,以及崩溃恢复逻辑.在这里我们简单的概述一

MySQL · 引擎特性 · 基于InnoDB的物理复制

最近有幸前去美国参加Percona Live 2016会议并分享了我们最近在MySQL复制上所做的工作,也就是基于InnoDB的物理复制.会后很多小伙伴私信我说分享的PPT太内核了,不太容易理解.因此本文主要针对分享的内容进行展开描述,希望能对大家有所帮助. 背景知识 在开始之前,你需要对InnoDB的事务系统有个基本的认识.如果您不了解,可以参考我之前的几篇关于InnoDB的文章,包括InnoDB的事务子系统,事务锁,redo log,undo log,以及崩溃恢复逻辑.在这里我们简单的概述一

MySQL · 引擎特性 · InnoDB redo log漫游

前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样,InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL,即在持久化数据文件前,保证之前的redo日志已经写到磁盘. LSN(log sequence number) 用于记录日志序号,它是一个不断递增的 unsigned long long 类型整数.在 InnoDB 的日志

数据库内核月报 - 2015 / 05-MySQL · 引擎特性 · InnoDB redo log漫游

前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样,InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL,即在持久化数据文件前,保证之前的redo日志已经写到磁盘. LSN(log sequence number) 用于记录日志序号,它是一个不断递增的 unsigned long long 类型整数.在 InnoDB 的日志

MySQL中Innodb的事务隔离级别和锁的关系的讲解教程_Mysql

前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式.同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力.所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在.这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么. 一次封锁or两段锁?因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用

MySQL中的MVCC(r12笔记第35天)

最近同事也问了我关于MySQL MVCC的一些问题,我觉得这个话题蛮有意思, 而之前似乎也没有总结过,就参考了一些资料,把一些内容摘录出来. 什么是MVCC 以下内容摘自:http://www.jdon.com/repository/database-mvcc.html 关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控制)来避免写操作堵塞读操作的并发问题,MVCC也就是通过使用数据的多个版本保证并发读写不冲突的一种机制,不同的数据库有不

RocksDB数据存储格式分析

RocksDB本身只是一个KV存储,用户通过put(key,value)来写入key,或者通过get(key)接口来获取value,所以单从RocksDB而言,每条记录都是一个key-value.那么当RocksDB作为一个存储引擎接入到MySQL时,key-value结构如何存储表中各个索引,以及如何记录中各个列的信息是本文要具体讨论的. RocksDB引擎与InnoDB引擎类似,也是采用索引组织表,无论是表(主键索引)还是二级索引都是以LSM tree方式组织,RocksDB记录主要包括三部