当前读和快照读
好的学习链接: http://blog.csdn.net/taylor_tao/article/details/7063639 innodb的默认事务隔离级别是rr(可重复读)。它的实现技术是mvcc。基于版本的控制协议。该技术不仅可以保证innodb的可重复读,而且可以防止幻读。但是它防止的是快照读,也就是读取的数据虽然是一致的,但是数据是历史数据。如何做到保证数据是一致的(也就是一个事务,其内部读取对应某一个数据的时候,数据都是一样的),同时读取的数据是最新的数据。innodb提供了一个间隙锁的技术。也就是结合grap锁与行锁,达到最终目的。当使用索引进行插入的时候,innodb会将当前的节点和上一个节点加锁。这样当进行select的时候,就不允许加x锁。那么在进行该事务的时候,读取的就是最新的数据。 实现: 1. 快照读(snapshot read) 简单的select操作(不包括 select ... lock in share mode, select ... for update) 2.当前读(current read) select ... lock in share mode select ... for update insert update delete 在RR级别下,快照读是通过MVVC(多版本控制)和undo log来实现的,当前读是通过加record