mvcc的存储方式:
1.Append-Only:指的是将数据历史版本直接存储到数据表中,如pgSQL
2.Delta:将数据的增量历史版本存储在独立表空间,如mySQL、oracle
3.Time-Travle:就是将数据的全量版本存储下,如HANA版本
mvcc工作原理:
1.读已提交:
读已提交只能看到两种数据:
当前事务自身产生的事务
当前事务开启之前,其他事务提交产生的数据
2.可重复读:
可重复读在mvcc下,如果事务A执行在事务B之前,且事务B执行的时候事务A还未执行, 当事务A执行完成后,事务B还没有结束的时候可以读取到事务A的数据。
读已提交和可重复读MVCC区别:读已提交隔离级别下每个SQL都有一个快照,它看到的库中数据是不同的。而在可重复读隔离级别下,所有的SQL语句都使用一个快照,可以看到数据库中同样的数据。