0%

MVCC只在提交读和可重复读两个隔离级别中使用。

版本链

对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(row_id并不是必要的,我们创建的表中有主键或者非NULL唯一键时都不会包含row_id列)

trx_id:每次对某条聚簇索引记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列。
roll_pointer:每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到undo日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息。

阅读全文 »

前言:在广义的计算机世界中,锁和版本控制是并发环境下的保证高效和运行正确的主要手段。面对多线程争抢临界资源的情况,必须采取措施进行干预,否则会出现数据不一致。通常使用锁和版本控制在高性能和数据一致性之间找到一个平衡。

总体的提高并发的思路如下:

  • 普通锁 本质是串行执行
  • 读写锁 读写分离,实现读读并发。
  • 版本控制 实现读写并发。
阅读全文 »