Five booking guards compared No double-booking: five guards, one invariant invariant: no two committed rows for room R overlap; overlap is not equality design overlaps retry + contention verdict A plain check + INSERT 1 DOUBLE no retry, silent corruption BROKEN B RC transaction 1 DOUBLE no retry, no predicate lock BROKEN C fixed room-row lock 0, winner 1 hot room serializes, 409 rest SIMPLEST CORRECT D exclusion constraint 0, winner 1 no hotspot, write boundary PREFER AT SCALE E serializable + retry 0, winner 1 40001, retry WHOLE txn CORRECT IF APP RETRIES 50-thread race on C: winners 1, doubles 0, median 6us, p99 167us (teaching numbers) extend [9,11) to [9,12) vs new [11,13): the guard re-checks the NEW range, equality would miss it UNIQUE fits discrete fixed slots only; intervals need overlap, never equality SELECT FOR UPDATE on the empty reservation result locks nothing: lock the room row or the write abort means retry the whole transaction with backoff + jitter and a bound, not the failed statement