# innodb mvcc
MVCC是Multi Version Concurrency Control的缩写,通过MVCC,innodb能够 提供事务之间更高的并发能力。
在MVCC中,每个事务看到的是数据库的一个快照,而不是当前最新的数据。 默认读不会加锁,即使其他事务中该事务运行期间修改了数据,也不会影响该事务的读取结果。
实现
在innodb中,每个数据行都包含一些隐藏的列
- DB_TRX_ID,记录了最后一次对改行进行修改的事务ID、用于确定该行的当前版本是由那个事务生成的
- DB_ROLL_PTR,指向该行的undo log记录,通过undo log行程了版本链,不同的事务根据自己的隔离级别找到符合要求的数据