Serializable Snapshot Isolation (SSI)

Summary: An optimistic concurrency control mechanism that provides serializability with performance characteristics similar to snapshot isolation.

Sources: chapter7

Last updated: 2026-04-17


SSI is a relatively new algorithm (first described in 2008) that provides full serializability but has only a small performance penalty compared to snapshot isolation. It is used in databases like PostgreSQL (since version 9.1) and FoundationDB (source: chapter7).

Pessimistic vs. Optimistic Concurrency Control

  • Two-Phase Locking (2PL) is pessimistic: it is based on the principle that if anything might possibly go wrong, it’s better to wait until the situation is safe again.
  • SSI is optimistic: it allows transactions to continue anyway, in the hope that everything will turn out all right. When a transaction wants to commit, the database checks whether anything bad happened (i.e., whether isolation was violated); if so, the transaction is aborted and has to be retried (source: chapter7).

Performance

Compared to 2PL, the big advantage of SSI is that one transaction doesn’t need to block waiting for locks held by another transaction. Like under snapshot isolation, readers don’t block writers, and vice versa. This makes query latency much more predictable and less variable (source: chapter7).