Skip to content

Conflict graph

Nodes are the committed transactions, edges are conflicting operation pairs in the order they happened. An edge from A to B says that in any equivalent serial schedule, A must run before B.

Updated: The on-call roster emptiesPostgreSQL 16REPEATABLE READ

rwrwT1T2

Not conflict-serializable

T1 must run before T2, and T2 must run before T1 — which is impossible, so no order of these transactions one after another produces this outcome.

Conflicts

  • T1T2read then write, key 2, steps 25, via a predicate read
  • T2T1read then write, key 1, steps 34, via a predicate read

Nodes are the committed transactions, edges are conflicting operation pairs in the order they happened. An edge from A to B says that in any equivalent serial schedule, A must run before B.