DB Internals AtlasPostgreSQL 18.6 Home About

Parameter · Resource Usage / Memory

serializable_buffers

Sets the size of the dedicated buffer pool used for the serializable transaction cache.

  • Default: 256kB
  • Type: integer (8kB)
  • Range: 128kB … 1GB
  • Applies: Restart required

In plain words

The SERIALIZABLE isolation level remembers information about committed transactions that may still conflict with running ones. When that does not fit in memory it is pushed out to pg_serial; this setting is how many 8 kB pages of it are cached.

For DBAs and operators

Configurable since PostgreSQL 17 (default 32, multiple of 16). Only relevant if you use SERIALIZABLE. The summarised old-transaction data goes to pg_serial when the predicate-lock structures (sized by max_pred_locks_per_transaction) overflow, typically with long-running serializable transactions alongside many short ones. Watch pg_stat_slru name = 'serializable' and SerialSLRU / SerialBuffer wait events. Many ERROR: could not serialize access due to read/write dependencies among transactions are a workload issue, not a buffer one.

How to change it

Change in postgresql.conf or ALTER SYSTEM, then restart the server.

See it in context

SLRU caches Isolation levels

Related parameters

max_pred_locks_per_transaction default_transaction_isolation

All Resource Usage parameters