# synchronized_standby_slots

> synchronized_standby_slots lists streaming replication standby server replication slot names that logical WAL sender processes will wait for. It is a sighup setting present in PG17–18; the latest recorded boot default is empty.
---

> [!NOTE]
> **Fact — official short description:** “Lists streaming replication standby server replication slot names that logical WAL sender processes will wait for.”

## Identity {#identity}

| Field | Value | Meaning |
| --- | --- | --- |
| Type | `string` | Upstream pg_settings type |
| Context | `sighup` | Takes effect after configuration reload |
| Unit | — | Raw unit |
| Range | — | Raw limits in the last observed version |
| Enum values | — | — for non-enum types |
| Category | Replication / Primary Server | Upstream classification |
| Latest boot value | `""` | empty string |
{.fields meta="-"}

## Lifecycle {#lifecycle}

| Fact | Value |
| --- | --- |
| First observed | PG17 |
| Present in | PG17–19 Beta 3 |
| Removed in | No |
| Introduction commit | [`0f934b0739ad`](https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0f934b0739ad28e8e20d8ad22ca80538544ce28a) — Rename standby_slot_names to synchronized_standby_slots. |
| Commit date | 2024-07-01 |
| Discussion | [thread 1](https://postgr.es/m/ZnWeUgdHong93fQN@momjian.us) |

## Default history {#default-history}

| Versions | Raw `boot_val` | Unit | Human value |
| --- | --- | --- | --- |
| PG17–19 Beta 3 | `""` | — | empty string |
{.full-width caption="Measured PG9.0–19 Beta 3 boot defaults"}

## How it works {#mechanism}

Lists streaming replication standby server replication slot names that logical WAL sender processes will wait for. A configuration reload applies a new value; existing work already in flight is not retroactively changed.

Logical senders on the primary wait until every listed physical standby slot has confirmed the relevant WAL before decoding sends changes. This protects failover-slot continuity, but a missing, invalid, or stalled listed slot can stop logical replication and slot-management functions.

Monitor and change synchronized_standby_slots together with sync_replication_slots, primary_slot_name, max_replication_slots. Validate on the relevant server role and real workload, then use its sighup context to choose session change, reload, or restart; a historical boot default is not the current effective value.

## Tuning advice {#tuning-advice}

> [!TIP]
> **Advice.** These are workload-specific starting points and must be validated with measurements.

| Workload | Guidance |
| --- | --- |
| OLTP | Size synchronized_standby_slots from topology, failover roles, slot/subscription count, and reconnect headroom. Test worst-case primary latency, standby replay, and disk retention before production. |
| OLAP | Read standbys and logical subscribers often see long queries or large transactions. Put explicit bounds on replay/apply and monitor lag, worker saturation, slot restart_lsn, and conflict cancellations. |
| Small nodes | Configure only replication capacity that is actually used. Even a small topology needs bounded timeouts and slot lifecycle; unlimited retention is not reliability. |
{.full-width}

## Pigsty {#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 | — | — |
{.full-width}

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

## Common pitfalls {#common-pitfalls}

- Listing a missing or invalid slot and blocking logical senders.
- Confusing physical slot names with standby application_name values.
- Failing to enable sync_replication_slots on the corresponding standbys.
- Changing it on the wrong primary, standby, sender, or subscriber role.
- Watching only configured bytes/time instead of actual lag, slot position, and worker state.

## Related parameters {#related-parameters}

[`sync_replication_slots`](/parameters/sync-replication-slots/) · [`primary_slot_name`](/parameters/primary-slot-name/) · [`max_replication_slots`](/parameters/max-replication-slots/) · [`max_slot_wal_keep_size`](/parameters/max-slot-wal-keep-size/) · [`synchronous_standby_names`](/parameters/synchronous-standby-names/) · [`vacuum_defer_cleanup_age`](/parameters/vacuum-defer-cleanup-age/)

## References {#references}

- [PostgreSQL 19 Beta 3 — synchronized_standby_slots](https://www.postgresql.org/docs/19/runtime-config-replication.html#GUC-SYNCHRONIZED-STANDBY-SLOTS)
- [PostgreSQL 19 release notes](https://www.postgresql.org/docs/19/release-19.html)
- [Machine-readable GUC export](/data/guc.jsonl)
