龙空技术网

3张图搞懂mysql事务隔离级别以及MVCC

酒桶纳尔 125

前言:

现时兄弟们对“mysql快照表”大致比较珍视,咱们都想要知道一些“mysql快照表”的相关知识。那么小编在网摘上网罗了一些有关“mysql快照表””的相关知识,希望大家能喜欢,我们快快来学习一下吧!

首先先理清事务,事务隔离级别,事务传播的概念。

事务:一组sql要么都失败,要么都成功。

事务隔离级别:事务与事务之间的可见性。有读未提交,读到别人尚未提交的数据。读已提交只能读取别人已提交的事务。可重复读,只能读取别人已提交的事务,并且这个已提交的事务,它开启的时间要小于当前事务开始的时间。序列化,只能有一个事务在运行。

事务传播:如果有事务了,后面创建事务的行为。比如可以加入前面事务,或者新建,或者直接异常等等。

MVCC:中文名叫多版本并发控制是在可重复读的事务级别上,mysql为了提高并发性而使用的技术。前置知识,mysql每一列的数据都会有3行隐藏列DB_TRX_ID事务id,理解成事务开启的时间戳即可,DB_ROLL_PTR指向undo日志的指针,理解成事务回滚操作即可,DB_ROW_ID当前表没有主键索引mysql会自动创建的主键索引。事务快照表,记录当前正在运行的事务所有事务id集合。

先看实例的前置条件

读以提交场景

可重复读场景:

MVCC只能控制到可重复读,解决不了幻读,幻读只能在序列化级别实现。

标签: #mysql快照表