针对MySQL的MVCC多版本并发控制的一些总结

MVCC

MVCC细节太多,我直接备忘一下总结:sql

MVCC就是经过事务的ID与行数据的版本(修改事务的ID)进行比较(经过redo log能够回溯版本)得出哪些版本的行数据可见和不可见而实现的事务隔离事务

一致性读

可重复读,查询只认可在事务启动前就已经提交完成的数据
读提交,查询只认可在语句启动前就已经提交完成的数据
本身版本更新的总可见(版本=事务/语句)
其余版本未提交的不可见it

版本已经提交,可是是在当前版本以后建立的不可见
版本已经提交,可是在当前版本开始前提交的可见(虽然都提交,可是建立视图的点不一样)io

更新

更新操做中的读,只能是当前读,已经提交完成的最新版本,或者遇到行锁阻塞sql语句

开启事务

对于可重复读

一、start transaction 开始事务的语句事务开启点是在不是这句,而是第一个执行sql语句的地方
二、start transaction with consistent snapshot 开始事务的语句事务开启点在这这句总结

对于读提交

start transaction 和 start transaction with consistent snapshot都是以每条语句的执行建立视图数据

相关文章
相关标签/搜索