【发布时间】:2021-03-03 05:22:03
【问题描述】:
如果不是FIFO,会导致意外中止。
Spanner 的中止系统和写入会话的规范如下;
- 如果事务冲突,spanner 将中止其中一个。
- 应该中止哪个事务基本上是由事务的开始时间决定的。
- 写入操作的会话启动事务,然后将它们保存在池中。
如果会话池不是 FIFO,则一个线程 (=A) 启动的事务有可能被另一个线程 (=B) 启动的另一个事务中止,即使 B 在 A 获取会话后获取会话会话。
【问题讨论】:
-
我意识到“应该中止哪个事务基本上是由事务的开始时间决定的。”是错的。由 BeginTransaction 调用后对事务的第一个操作决定。