知识卡片
只读性能来自MVCC
内容
Spanner 保持 serializable,同时用 MVCC 支持只读事务和快照读,让读从历史版本执行而不阻塞读写事务。发散:强一致并不必然等于所有读都加锁,关键是给读选择一个合法快照时间。
参考来源
- 位置:《分布式系统与一致性》第8章《Google的Spanner数据库》并发控制一节(源文件:_epub-src/OEBPS/Text/chapter12.xhtml)
- 结论依据:原文明确"Spanner没有隔离级别的等级,或者说它只有一种隔离级别,就是serializable级别",同时"Spanner同时采用了锁(locking)和多版本并发控制(MVCC)两种并发控制机制","只读事务和快照读事务都是从历史版本中读取的……所以只读事务和快照读事务不会妨碍读/写事务的执行"。
- 原始内容:Spanner没有隔离级别的等级,或者说它只有一种隔离级别,就是serializable级别……Spanner同时采用了锁(locking)和多版本并发控制(MVCC,Multi Version Concurrent Control)两种并发控制机制……只读事务和快照读事务都是从历史版本中读取的,即相当于从某个时间点的snapshot中读取……所以只读事务和快照读事务不会妨碍读/写事务的执行。