default_tablespace
Fact — official short description: “Sets the default tablespace to create tables and indexes in.”
Identity
Lifecycle
| Fact | Value |
|---|---|
| First observed | PG9.0 (research boundary) |
| Present in | PG9.0–19 Beta 3 |
| Removed in | No |
| Introduction commit | Not asserted: predates the PG9.0 research boundary |
| Commit date | — |
| Discussion | — |
Default history
| Versions | Raw boot_val |
Unit | Human value |
|---|---|---|---|
| PG9.0–19 Beta 3 | "" |
— | empty string |
How it works
default_tablespace sets the default tablespace to create tables and indexes in. An empty string means use the database’s default tablespace. It selects the destination for new persistent tables and indexes, not temporary objects or CREATE DATABASE; an invalid configured name falls back to the database default in some contexts.
default_tablespace 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
Advice. These are workload-specific starting points and must be validated with measurements.
| Workload | Guidance |
|---|---|
| OLTP | Keep default_tablespace aligned with schema-management policy and make important storage choices explicit in migrations. Benchmark any physical-layout change with production-shaped writes. |
| OLAP | Use default_tablespace deliberately for bulk objects and spill-heavy jobs, checking I/O placement, compression support, and operational tooling before adoption. |
| Small nodes | Prefer the upstream default for default_tablespace unless the node has a verified alternate storage path or restore requirement; simplicity reduces recovery surprises. |
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 | — | — |
Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.
Common pitfalls
- Changing default_tablespace 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_tablespace globally without a rollback plan and a client or operational compatibility test.
Related parameters
default_table_access_method · temp_tablespaces · default_toast_compression · check_function_bodies · maintenance_work_mem