mvcc旨在控制多版本并发读写,早期版本只有读读之间可以并发,而读写,写读,写写操作都是阻塞的,引入mvcc后,只有写写操作是阻塞的,mysql的实现原理是在数据节点有两个字段列,trid,rollbackpointer。

    主要解决问题为在修改操作时,会加上行级锁,但上锁的开销较大,MVCC就是为了解决开销问题而存在,很多情况下,可以代替行级锁。

    实现原理是因为每个事务进行修改操作时,都会往undo.log中写入内容,而历史版本可以通过前面的trid和rollbackpointer寻找到快照信息,具体读取哪个快照按隔离级别计算。