例如按照下面时间顺序执行
因为 B 查询的数据要求是 createdAt < B.version && (deletedAt > B.version || deletedAt = null)
那么在事务 B 中,第一次查询到的记录和第二次查询到的记录是不一样的
这个怎么解释?
1
ixiaohei Oct 19, 2017
版本号和回滚段保证可重复读。
|
3
domty Oct 19, 2017
Next-Key Lock
|
4
namedfish Oct 19, 2017 via iPhone
在隔离级别为可重复读的情况下可以保证,详情可以 google mysql 隔离级别设置
|
5
ixiaohei Oct 19, 2017
@sunkuku 我说错了,mysql 的 mvvc 的可以保证重复读,但是幻读是间隙锁还是什么东西保证的,具体可以读 mysql 官方文档。
另外你说的读到另外新插入的行这个是幻读,不是可重复读,可重复读这个隔离级别不保证幻读的。但是 mysql 可重复度貌似解决幻读(当时读文档很是因垂丝丁) |
6
sunkuku OP |
7
sunkuku OP |
9
sunkuku OP 这个是 MVCC 实现原理的文章,放在团队博客上了
http://fridaytalk.org/archives/20/ |