缓存写提交(Buffering Writes until Commit)

缓存写提交(Buffering Writes until Commit)

Content #

为了缩短写操作的延迟,可以将所有写操作缓存起来,直到 commit 语句时一起执行,这种方式称为 Buffering Writes until Commit,我把它翻译为“缓存写提交”。而 TiDB 的事务处理中就采用这种方式。

所有从 Client 端提交的 SQL 首先会缓存在 TiDB 节点,只有当客户端发起 Commit 时,TiDB 节点才会启动两阶段提交,将 SQL 被转换为 TiKV 的操作。这样,显然可以压缩第一阶段的延迟,把多个写操作 SQL 压缩到大约一轮共识算法的时间。那么整个事务延迟就是:

\[L_{txn}=2*L_c\]

Viewpoints #

From #

10 | 原子性:如何打破事务高延迟的魔咒?