Repeatable read blocks a larger subset in the toy matrix.

highlighted = computed this step

Repeatable read

Repeatable read is modeled as blocking a larger subset than read committed. The compiler computes that subset directly from the pinned matrix.

repeatable read row\text{repeatable read row}

Two blocked labels

The repeatable read row blocks 2 anomaly labels and allows 2 labels.

blocked=2,allowed=2\text{blocked}=2,\quad \text{allowed}=2

isolation levels are rendered as a tiny pedagogical matrix over named anomalies only; ANSI completeness, vendor behavior, performance, and operational guarantees are out of scope.

Repeatable readleveldirty_readnon_repeatable_readlost_updatewrite_skewread_committedblockedallowedallowedallowedrepeatable_readblockedblockedallowedallowedsnapshot_isolationblockedblockedblockedallowedserializableblockedblockedblockedblocked blocked versus allowedlevelblockedCountblockedallowedCountallowedread_committed1dirty_read3non_repeatable_read, lost_update, write_skewrepeatable_read2dirty_read, non_repeatable_read2lost_update, write_skewsnapshot_isolation3dirty_read, non_repeatable_read, lost_update1write_skewserializable4dirty_read, non_repeatable_read, lost_update, write_skew0none stronger-than cover edgesstrongerweakerrepeatable_readread_committedsnapshot_isolationrepeatable_readserializablesnapshot_isolation

Summary

Repeatable read is stronger than read committed in this finite comparison. Note: product-specific repeatable-read semantics are out of scope.

a larger blocked set\text{a larger blocked set}