什么是MVCC
MVCC-多版本的并发控制协议 , MVCC是通过保存数据在某个事件点的快照来实现的
优点是 : 读不加锁 , 读写不冲突
MVCC原理
每开启一个新的事务,事务的ID就会自动递增,也就是为事务分配单向增长的时间戳,为每一个修改保存修改之前的版本(相当于快照),读操作只读该事务开始前的数据库的快照,这样读操作就不用阻塞写操作,写操作不用阻塞读操作的同时,避免了脏读和不可重复读
-
脏读 : 读取未提交数据 , A事务读取B事务未提交的数据,如果此时B事务发生回滚,A事务读取的数据称为脏数据
-
不可重复读 :前后多次读取,数据内容不一致,A事务首先读取一条数据,然后执行逻辑的时候,事务B将这条数据改变了,事务A再次读取的时候发现前后数据不匹配,主要是针对update或delete
-
幻读 :事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读,主要针对insert
Innodb的最基本行记录(row)中包含一些额外的存储信息:DATA_TRX_ID,DATA_ROLL_PTR,DB_ROW_IDÿ