0
点赞
收藏
分享

微信扫一扫

短网址数据库InnoDB的快照读和什么相关?分享

InnoDB是非常适合​​短网址业务​​的存储引擎,其多版本并发控制(Multi Version Concurrency Control, MVCC),快照读(Snapshot Read)机制,能够通过读取回滚段(rollback segment)中数据的历史版本,在事务读取记录的时候不用加锁,以支持超高的并发。

在读提交(Read Committed, RC),可重复读(Repeated Read, RR)两个不同的事务的隔离级别下,快照读的玩法有什么差异,又和什么因素有关呢?

假设有InnoDB表:

t(id PK, name);


表中有三条记录:

1, shenjian

2, zhangsan

3, lisi

case 1​,​​短网址​​​的两个并发事务A,B执行的时间序列如下(A先于B开始,B先于A结束):

A1: start transaction;

B1: start transaction;

A2: select * from t;

B2: insert into t values (4, wangwu);

A3: select * from t;

B3: commit;

A4: select * from t;

case 2​,仍然是上面的两个事务,只是A和B开始时间稍有不同(B先于A开始,B先于A结束):

B1: start transaction;

A1: start transaction;

A2: select * from t;

B2: insert into t values (4, wangwu);

A3: select * from t;

B3: commit;

A4: select * from t;

事务的开始时间不一样,会不会影响“快照读”的结果呢?

case 3​,仍然是短链接高并发的事务A与B(A先于B开始,B先于A结束):

A1: start transaction;

B1: start transaction;

B2: insert into t values (4, wangwu);

B3: commit;

A2: select * from t;

case 4​,事务开始的时间再换一下(B先于A开始,B先于A结束):

B1: start transaction;

A1: start transaction;

B2: insert into t values (4, wangwu);

B3: commit;

A2: select * from t;

以上是部分情况整理的分享,具体问题具体对待考虑不做为权威发布!

:)


举报

相关推荐

0 条评论