Skip to content

default_toast_compression

default_toast_compression is the PostgreSQL setting that defines the default compression method for compressible values.
Note

Fact — official short description: “Sets the default compression method for compressible values.”

Identity

Type , Valueenum
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Valuepglz, lz4
— for non-enum types
Category , ValueClient Connection Defaults / Statement Behavior
Upstream classification
Latest boot value , Valuelz4
lz4

Lifecycle

Fact Value
First observed PG14
Present in PG14–19 Beta 3
Removed in No
Introduction commit bbe0a81db69b — Allow configurable LZ4 TOAST compression.
Commit date 2021-03-19
Discussion thread 1 · thread 2

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG14–18 pglz pglz
PG19 Beta 3 lz4 lz4

How it works

default_toast_compression sets the default compression method for compressible values. It chooses pglz or, when compiled in, lz4 for newly written compressible values; a column COMPRESSION clause overrides the session default.

default_toast_compression is a USER-context setting. An authorized role can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It supplies a default only when SQL omits an explicit choice, so schema migrations, object-level options, privileges, and later ALTER operations can override or outlive it.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Benchmark pglz versus lz4 with representative wide values, update rates, CPU, WAL, and storage. Prefer explicit column COMPRESSION for important schemas over a surprising session default.
OLAP LZ4 can favor faster compression and decompression when the build supports it, but measure actual compressibility and scan behavior before changing new-write policy.
Small nodes Keep pglz unless CPU-versus-space measurements and package support justify lz4; changing the default does not recompress existing values.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG14–19 Beta 3 unmodified; OLAP: PG14–19 Beta 3 unmodified; CRIT: PG14–19 Beta 3 unmodified; TINY: PG14–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing default_toast_compression in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Expecting a changed default to rewrite existing objects or override explicit DDL clauses.
  • Ignoring tablespace privileges, installed access methods or compression support, and restore portability.
  • Changing default_toast_compression globally without a rollback plan and a client or operational compatibility test.

default_table_access_method · default_tablespace · temp_tablespaces · check_function_bodies · maintenance_work_mem

References