-However, the overall client-observed latency still includes per-statement work that must be performed, so the overall transaction performance does not, in general, achieve `O(1)`. For example, although transaction pipelining parallelizes the [Raft]({% link {{ page.version.version }}/architecture/replication-layer.md %}#raft) consensus work for [intent writes](#write-intents) across statements, each statement must still be [planned and evaluated]({% link {{ page.version.version }}/architecture/sql-layer.md %}) (e.g., [index]({% link {{ page.version.version }}/indexes.md %}) lookups, [constraint]({% link {{ page.version.version }}/constraints.md %}) checks, [conflict](#transaction-conflicts) detection, and waiting on [contending]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#understanding-and-avoiding-transaction-contention) writes). The client still submits statements sequentially. Statements that touch the same rows can also create pipeline stalls to preserve [read-your-writes](https://jepsen.io/consistency/models/read-your-writes) ordering. As a result, while the consensus component of write latency can approach `O(1)` with respect to the number of statements, end-to-end transaction latency can still increase with the number of statements.
0 commit comments