Skip to content

1 - application_name

application_name is the PostgreSQL setting that defines the application name to be reported in statistics and logs.
Note

Fact — official short description: “Sets the application name to be reported in statistics and logs.”

Identity

Type , Valuestring
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 , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Value""
empty string

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 "" empty string

How it works

application_name is client-supplied session metadata, usually set in the startup packet or later with SET. It appears in pg_stat_activity and CSV logs and can be inserted into text logs with the %a escape in log_line_prefix.

The value is shorter than NAMEDATALEN bytes (64 characters in a standard build). PostgreSQL permits printable ASCII; other characters are rendered as C-style hexadecimal escapes. Truncation and escaping mean log consumers must not assume the displayed value exactly matches an application’s original string.

It is a USER-context label and is not authenticated identity: any authorized client can claim a misleading value and a pooled session can retain or overwrite it. Correlate it with authenticated user, database, session ID, remote endpoint, and controlled pool checkout/reset behavior.

Tuning advice

Tip

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

Workload Guidance
OLTP Require each service and pooler to set a short, stable, non-secret application_name at checkout and reset it before reuse. Use controlled naming conventions, but never authorize or audit solely from this value.
OLAP Set a stable job or tool family label and place run-specific high-cardinality identity elsewhere. Correlate long analytical sessions with authenticated role and session ID.
Small nodes Keep labels compact and useful; node size is irrelevant. Avoid embedding tenant IDs, tokens, SQL, or unbounded request identifiers in a 64-character client-controlled field.

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: 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

  • Treating application_name as authenticated identity or using it alone for authorization, billing, or audit attribution.
  • Exceeding NAMEDATALEN and silently losing distinguishing suffixes through truncation.
  • Assuming arbitrary Unicode is preserved rather than escaped to printable C-style hexadecimal sequences.
  • Leaking secrets or creating unbounded cardinality in logs and pg_stat_activity, or failing to reset the value in a connection pool.

cluster_name · update_process_title · log_line_prefix · log_timezone · log_hostname

References

2 - cluster_name

cluster_name is the PostgreSQL setting that defines the name of the cluster, which is included in the process title.
Note

Fact — official short description: “Sets the name of the cluster, which is included in the process title.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Process Title
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG9.5
Present in PG9.5–19 Beta 3
Removed in No
Introduction commit 51adcaa0df81 — Add cluster_name GUC which is included in process titles if set.
Commit date 2014-06-29
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.5–19 Beta 3 "" empty string

How it works

cluster_name sets the name of the cluster, which is included in the process title. It is an operator-facing label included in process titles and can distinguish several clusters running on one host; it is not a database identifier.

cluster_name is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

Process titles complement application_name, cluster_name, pg_stat_activity, and log_line_prefix, allowing operating-system observations to be joined with database activity.

Tuning advice

Tip

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

Workload Guidance
OLTP Keep cluster_name enabled or populated for operator clarity unless profiling proves material overhead. Use stable, non-secret labels that match monitoring inventory.
OLAP Preserve cluster_name so long jobs can be attributed from operating-system and PostgreSQL views; use application_name for finer job identity.
Small nodes Do not tune cluster_name for capacity. Its observability value normally outweighs negligible overhead, but avoid high-cardinality or sensitive labels.

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: PG9.5–19 Beta 3 unmodified; OLAP: PG9.5–19 Beta 3 unmodified; CRIT: PG9.5–19 Beta 3 unmodified; TINY: PG9.5–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting a reload or SET to activate cluster_name, although it requires a controlled server restart.
  • Putting secrets or unbounded high-cardinality data into operator-visible process labels.
  • Using inconsistent cluster, application, and process labels that cannot be joined across monitoring systems.
  • Changing cluster_name globally without a rollback plan and a client or operational compatibility test.

application_name · update_process_title · log_line_prefix · log_timezone · log_hostname

References

3 - debug_pretty_print

debug_pretty_print is the PostgreSQL setting that indents parse and plan tree displays.
Note

Fact — official short description: “Indents parse and plan tree displays.”

Identity

Type , Valuebool
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 , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueon
on

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 on on

How it works

debug_pretty_print indents parse and plan tree displays. It changes only the indentation of internal parse and plan tree dumps produced by the debug_print_* switches.

debug_pretty_print 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.

The debug_print_* switches feed the normal server logging path, so log_min_messages, log_destination, and collector capacity determine whether the output is retained safely.

Tuning advice

Tip

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

Workload Guidance
OLTP Do not tune or enable debug_pretty_print globally in production. If server-developer diagnostics require it, isolate one session, bound its duration, and route the resulting logs safely.
OLAP Do not use debug_pretty_print as a substitute for EXPLAIN on analytical SQL; capture a targeted plan instead of dumping every internal tree.
Small nodes Leave debug_pretty_print at its normal default. Verbose internal trees can exhaust a small node’s log I/O and disk unexpectedly.

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: 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 debug_pretty_print in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Leaving an internal-tree dump enabled globally and overwhelming log I/O, storage, or ingestion.
  • Treating debug output as a stable public format or as a substitute for targeted EXPLAIN diagnostics.
  • Changing debug_pretty_print globally without a rollback plan and a client or operational compatibility test.

debug_print_parse · debug_print_plan · debug_print_rewritten · log_min_messages · client_min_messages

References

4 - debug_print_parse

debug_print_parse is the PostgreSQL setting that controls whether PostgreSQL logs each query’s parse tree.
Note

Fact — official short description: “Logs each query’s parse tree.”

Identity

Type , Valuebool
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 , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

debug_print_parse logs each query’s parse tree. The output is PostgreSQL’s internal parse-tree representation for every parsed query, not normalized SQL text.

debug_print_parse 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.

The debug_print_* switches feed the normal server logging path, so log_min_messages, log_destination, and collector capacity determine whether the output is retained safely.

Tuning advice

Tip

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

Workload Guidance
OLTP Do not tune or enable debug_print_parse globally in production. If server-developer diagnostics require it, isolate one session, bound its duration, and route the resulting logs safely.
OLAP Do not use debug_print_parse as a substitute for EXPLAIN on analytical SQL; capture a targeted plan instead of dumping every internal tree.
Small nodes Leave debug_print_parse at its normal default. Verbose internal trees can exhaust a small node’s log I/O and disk unexpectedly.

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: 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 debug_print_parse in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Leaving an internal-tree dump enabled globally and overwhelming log I/O, storage, or ingestion.
  • Treating debug output as a stable public format or as a substitute for targeted EXPLAIN diagnostics.
  • Changing debug_print_parse globally without a rollback plan and a client or operational compatibility test.

debug_pretty_print · debug_print_plan · debug_print_rewritten · log_min_messages · client_min_messages

References

5 - debug_print_plan

debug_print_plan is the PostgreSQL setting that controls whether PostgreSQL logs each query’s execution plan.
Note

Fact — official short description: “Logs each query’s execution plan.”

Identity

Type , Valuebool
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 , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

debug_print_plan logs each query’s execution plan. The output is an internal plan tree for every query and is much more verbose than a targeted EXPLAIN; it is intended for server debugging.

debug_print_plan 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.

The debug_print_* switches feed the normal server logging path, so log_min_messages, log_destination, and collector capacity determine whether the output is retained safely.

Tuning advice

Tip

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

Workload Guidance
OLTP Do not tune or enable debug_print_plan globally in production. If server-developer diagnostics require it, isolate one session, bound its duration, and route the resulting logs safely.
OLAP Do not use debug_print_plan as a substitute for EXPLAIN on analytical SQL; capture a targeted plan instead of dumping every internal tree.
Small nodes Leave debug_print_plan at its normal default. Verbose internal trees can exhaust a small node’s log I/O and disk unexpectedly.

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: 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 debug_print_plan in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Leaving an internal-tree dump enabled globally and overwhelming log I/O, storage, or ingestion.
  • Treating debug output as a stable public format or as a substitute for targeted EXPLAIN diagnostics.
  • Changing debug_print_plan globally without a rollback plan and a client or operational compatibility test.

debug_pretty_print · debug_print_parse · debug_print_rewritten · log_min_messages · client_min_messages

References

6 - debug_print_raw_parse

debug_print_raw_parse — Logs each query’s raw parse tree. Observed in PG19 Beta 3; its last measured boot default is off in PG19 Beta 3, with user context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA.
Note

Fact — official short description: “Logs each query’s raw parse tree.”

Identity

Type , Valuebool
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 , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG19 Beta 3
Present in PG19 Beta 3
Removed in No
Introduction commit 06473f5a344d — Allow to log raw parse tree.
Commit date 2025-09-06
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG19 Beta 3 off off

How it works

PostgreSQL describes debug_print_raw_parse as follows: “Logs each query’s raw parse tree.” It can be changed per session, which makes plan or behavior comparisons possible without changing every workload. The atlas measures it in PG19 Beta 3; boot_val is the compiled or initialized baseline, not proof of a running cluster’s effective setting.

The raw parse tree is emitted before parse analysis, rewriting, planning, and execution. Messages use LOG level; debug_pretty_print changes formatting, while client_min_messages and log_min_messages determine where they are visible. Output can be very large and can expose query text structure.

Read it together with debug_print_parse, debug_print_rewritten, debug_print_plan, debug_pretty_print. Check SHOW and pg_settings on the target server, verify the source and pending_restart fields, and compare workload, logs, and resource metrics before and after any change.

Tuning advice

Tip

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

Workload Guidance
OLTP Keep the upstream default until a reproducible operational need is demonstrated. Test under representative concurrency and inspect logs, latency, and the related settings before changing cluster-wide policy.
OLAP Evaluate the setting with representative long-running and batch work. Measure total runtime, resource use, log volume, and failure behavior across the whole job rather than one isolated operation.
Small nodes Minimize overrides and document rollback. A small system has less room for extra logging, workers, memory, or retained WAL, so validate the change with explicit resource limits.

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: PG19 Beta 3 unmodified; OLAP: PG19 Beta 3 unmodified; CRIT: PG19 Beta 3 unmodified; TINY: PG19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Treating the measured boot_val for debug_print_raw_parse as proof of the effective value on an initialized or managed cluster.
  • Applying a change as though it were immediate while pg_settings reports user context.
  • Changing this setting in isolation without checking the linked limits, observability, and rollback path.
  • Depending on beta behavior in production without retesting the PostgreSQL 19 final release.

debug_print_parse · debug_print_rewritten · debug_print_plan · debug_pretty_print · log_min_messages

References

7 - debug_print_rewritten

debug_print_rewritten is the PostgreSQL setting that controls whether PostgreSQL logs each query’s rewritten parse tree.
Note

Fact — official short description: “Logs each query’s rewritten parse tree.”

Identity

Type , Valuebool
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 , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

debug_print_rewritten logs each query’s rewritten parse tree. It exposes the query tree after rule rewriting, which is useful for diagnosing views and rules but can generate very large logs.

debug_print_rewritten 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.

The debug_print_* switches feed the normal server logging path, so log_min_messages, log_destination, and collector capacity determine whether the output is retained safely.

Tuning advice

Tip

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

Workload Guidance
OLTP Do not tune or enable debug_print_rewritten globally in production. If server-developer diagnostics require it, isolate one session, bound its duration, and route the resulting logs safely.
OLAP Do not use debug_print_rewritten as a substitute for EXPLAIN on analytical SQL; capture a targeted plan instead of dumping every internal tree.
Small nodes Leave debug_print_rewritten at its normal default. Verbose internal trees can exhaust a small node’s log I/O and disk unexpectedly.

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: 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 debug_print_rewritten in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Leaving an internal-tree dump enabled globally and overwhelming log I/O, storage, or ingestion.
  • Treating debug output as a stable public format or as a substitute for targeted EXPLAIN diagnostics.
  • Changing debug_print_rewritten globally without a rollback plan and a client or operational compatibility test.

debug_pretty_print · debug_print_parse · debug_print_plan · log_min_messages · client_min_messages

References

8 - event_source

event_source is the PostgreSQL setting that defines the application name used to identify PostgreSQL messages in the event log.
Note

Fact — official short description: “Sets the application name used to identify PostgreSQL messages in the event log.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , ValuePostgreSQL
PostgreSQL

Lifecycle

Fact Value
First observed PG9.2
Present in PG9.2–19 Beta 3
Removed in No
Introduction commit d8ea33f2c027 — Support configurable eventlog application names on Windows
Commit date 2011-10-25
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.2–19 Beta 3 PostgreSQL PostgreSQL

How it works

event_source sets the application name used to identify PostgreSQL messages in the event log. This is a Windows event-log identifier and has no effect unless eventlog is an active log destination.

event_source is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

event_source is consulted only on Windows when eventlog is selected in log_destination; Windows Event Log registration, permissions, routing, and retention supply the rest of the pipeline.

Tuning advice

Tip

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

Workload Guidance
OLTP Set event_source only for a Windows eventlog deployment, using a stable non-secret identity registered and routed by the host logging policy.
OLAP Keep the same event source across workload classes so Windows collection rules and dashboards do not fragment by profile.
Small nodes Leave event_source at its default unless eventlog is selected; changing a dormant label provides no capacity or observability benefit.

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: PG9.2–19 Beta 3 unmodified; OLAP: PG9.2–19 Beta 3 unmodified; CRIT: PG9.2–19 Beta 3 unmodified; TINY: PG9.2–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting a reload or SET to activate event_source, although it requires a controlled server restart.
  • Changing the source name without registering or updating Windows Event Log routing and access policy.
  • Expecting event_source to have any effect when eventlog is not an active log destination or the platform is not Windows.
  • Changing event_source globally without a rollback plan and a client or operational compatibility test.

logging_collector · log_destination · log_directory · log_filename · log_rotation_age · log_rotation_size

References

9 - log_autoanalyze_min_duration

log_autoanalyze_min_duration — Sets the minimum execution time above which analyze actions by autovacuum will be logged. Observed in PG19 Beta 3; its last measured boot default is 10 min in PG19 Beta 3, with sighup context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA.
Note

Fact — official short description: “Sets the minimum execution time above which analyze actions by autovacuum will be logged.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Valuems
Raw unit
Range , Value-12147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Value600000
10 min

Lifecycle

Fact Value
First observed PG19 Beta 3
Present in PG19 Beta 3
Removed in No
Introduction commit dd3ae378301f — Add log_autoanalyze_min_duration
Commit date 2025-10-15
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG19 Beta 3 600000 ms 10 min

How it works

PostgreSQL describes log_autoanalyze_min_duration as follows: “Sets the minimum execution time above which analyze actions by autovacuum will be logged.” A configuration reload applies the value to the server without a full restart. The atlas measures it in PG19 Beta 3; boot_val is the compiled or initialized baseline, not proof of a running cluster’s effective setting.

Zero logs every automatic ANALYZE, -1 disables these duration messages, and a positive value logs actions meeting the threshold plus relevant skips caused by locks or dropped relations. Per-table storage parameters can override it, independently from log_autovacuum_min_duration for VACUUM actions.

Read it together with log_autovacuum_min_duration, autovacuum, autovacuum_analyze_threshold, autovacuum_analyze_scale_factor. Check SHOW and pg_settings on the target server, verify the source and pending_restart fields, and compare workload, logs, and resource metrics before and after any change.

Tuning advice

Tip

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

Workload Guidance
OLTP Keep the upstream default until a reproducible operational need is demonstrated. Test under representative concurrency and inspect logs, latency, and the related settings before changing cluster-wide policy.
OLAP Evaluate the setting with representative long-running and batch work. Measure total runtime, resource use, log volume, and failure behavior across the whole job rather than one isolated operation.
Small nodes Minimize overrides and document rollback. A small system has less room for extra logging, workers, memory, or retained WAL, so validate the change with explicit resource limits.

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: PG19 Beta 3 unmodified; OLAP: PG19 Beta 3 unmodified; CRIT: PG19 Beta 3 unmodified; TINY: PG19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Treating the measured boot_val for log_autoanalyze_min_duration as proof of the effective value on an initialized or managed cluster.
  • Applying a change as though it were immediate while pg_settings reports sighup context.
  • Changing this setting in isolation without checking the linked limits, observability, and rollback path.
  • Depending on beta behavior in production without retesting the PostgreSQL 19 final release.

log_autovacuum_min_duration · autovacuum · autovacuum_analyze_threshold · autovacuum_analyze_scale_factor · log_min_messages

References

10 - log_autovacuum_min_duration

log_autovacuum_min_duration is the PostgreSQL setting that defines the minimum execution time above which autovacuum actions will be logged.
Note

Fact — official short description: “Sets the minimum execution time above which vacuum actions by autovacuum will be logged.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Valuems
Raw unit
Range , Value-12147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Value600000
10 min

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–14 -1 ms -1 ms
PG15–19 Beta 3 600000 ms 10 min

How it works

log_autovacuum_min_duration sets the minimum execution time above which autovacuum actions will be logged. -1 disables logging autovacuum actions. 0 means log all autovacuum actions. Each qualifying automatic VACUUM or ANALYZE emits timing and work details; -1 disables these completion records and zero records every action.

log_autovacuum_min_duration is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_autovacuum_min_duration against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_autovacuum_min_duration telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_autovacuum_min_duration useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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 1s different 1s
OLAP 1s different 1s
CRIT 1s different 1s
TINY 1s different 1s
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = 1s (dcs); OLAP: PG9.0–19 Beta 3 = 1s (dcs); CRIT: PG9.0–19 Beta 3 = 1s (dcs); TINY: PG9.0–19 Beta 3 = 1s (dcs). Advice, pending human review — Editorial inference: A one-second threshold makes unexpectedly slow vacuum maintenance visible across profiles without logging every fast action.

Common pitfalls

  • Editing log_autovacuum_min_duration without reloading configuration and verifying the effective value and subsequent behavior.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_autovacuum_min_duration globally without a rollback plan and a client or operational compatibility test.

log_checkpoints · log_lock_waits · log_lock_failures · log_temp_files · log_replication_commands

References

11 - log_checkpoints

log_checkpoints is the PostgreSQL setting that controls whether PostgreSQL logs each checkpoint.
Note

Fact — official short description: “Logs each checkpoint.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueon
on

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–14 off off
PG15–19 Beta 3 on on

How it works

log_checkpoints logs each checkpoint. A checkpoint record includes elapsed phases and buffer or WAL work, exposing checkpoint cadence and write pressure rather than merely a marker.

log_checkpoints is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_checkpoints against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_checkpoints telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_checkpoints useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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 on same as boot 'on'
OLAP on same as boot 'on'
CRIT on same as boot 'on'
TINY on same as boot 'on'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = on (dcs); OLAP: PG9.0–19 Beta 3 = on (dcs); CRIT: PG9.0–19 Beta 3 = on (dcs); TINY: PG9.0–19 Beta 3 = on (dcs). Advice, pending human review — Editorial inference: Explicit checkpoint logging preserves write-volume and timing evidence consistently, including releases where the upstream default was off.

Common pitfalls

  • Editing log_checkpoints without reloading configuration and verifying the effective value and subsequent behavior.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_checkpoints globally without a rollback plan and a client or operational compatibility test.

log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_temp_files · log_replication_commands

References

12 - log_connections

log_connections is the PostgreSQL setting that controls whether PostgreSQL logs specified aspects of connection establishment and setup.
Note

Fact — official short description: “Logs specified aspects of connection establishment and setup.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesuperuser-backend
Fixed when a superuser backend starts
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Value""
empty string

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–17 off off
PG18–19 Beta 3 "" empty string

How it works

In PostgreSQL 10–17, log_connections is a Boolean that logs successful connections when enabled. PostgreSQL 18 changed it to a string list whose exact options are receipt, authentication, authorization, setup_durations, and all; the empty string disables connection logging. For compatibility, on, true, yes, and 1 mean receipt,authentication,authorization, while off, false, no, and 0 mean the empty list. Failed authentication is logged regardless of this setting.

log_connections has SUPERUSER_BACKEND context: it may be selected by a superuser or a role with the appropriate SET privilege at session start, but it cannot be changed after the backend session has started. A configuration change therefore affects new sessions only.

receipt records arrival, authentication records the original identity presented by the authentication method, authorization records successful authorization with user/database/application context, and setup_durations records total setup, backend-fork, and authentication timing. log_disconnections controls session-end records separately; connection identities and topology remain sensitive log data.

Tuning advice

Tip

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

Workload Guidance
OLTP For routine OLTP, log only the stages required by an audit or latency question; authorization is a lower-volume successful-connection trail, while receipt and authentication add pre-authorization evidence. Add setup_durations only when connection startup latency is being investigated.
OLAP Analytical sessions are fewer but longer, so authorization plus setup_durations can be useful for attributing expensive connection setup; do not use all merely because query volume is lower.
Small nodes Keep the list minimal and retain failed-authentication monitoring, which is independent of this setting. Verify that log storage and redaction can safely retain original identities and application names.

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 authorization different 'authorization'
OLAP authorization different 'authorization'
CRIT receipt,authentication,authorization different 'receipt,authentication,authorization'
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–17 unmodified, PG18–19 Beta 3 = authorization (dcs); OLAP: PG9.0–17 unmodified, PG18–19 Beta 3 = authorization (dcs); CRIT: PG9.0–17 = on (dcs), PG18–19 Beta 3 = receipt,authentication,authorization (dcs); TINY: PG9.0–19 Beta 3 unmodified. Advice, pending human review — Editorial inference: CRIT captures a fuller authentication audit trail, while PostgreSQL 18 OLTP and OLAP retain successful authorization events with lower volume; migration semantics require review.

Common pitfalls

  • Using setup instead of the valid PostgreSQL 18 option setup_durations.
  • Assuming the compatibility value on means all; it omits setup_durations and maps only to receipt, authentication, and authorization.
  • Expecting existing sessions to inherit a changed value even though the setting is fixed at backend startup.
  • Treating duplicate receipt records as attacks without accounting for clients such as psql that can probe twice, or retaining original identities without an access-control policy.

log_statement · log_duration · log_disconnections · log_parameter_max_length · log_parameter_max_length_on_error

References

13 - log_destination

log_destination is the PostgreSQL setting that defines the destination for server log output.
Note

Fact — official short description: “Sets the destination for server log output.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valuestderr
stderr

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 stderr stderr

How it works

log_destination sets the destination for server log output. Valid values are combinations of “stderr”, “syslog”, “csvlog”, “jsonlog”, and “eventlog”, depending on the platform. Several destinations can be active at once; csvlog and jsonlog require logging_collector, while stderr, syslog, and Windows eventlog follow different transport paths.

log_destination is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The active path is composed from log_destination, logging_collector or syslog/eventlog, file naming and permissions, rotation triggers, and external shipping or retention.

Tuning advice

Tip

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

Workload Guidance
OLTP Set log_destination as part of one end-to-end logging design. Validate collector behavior, rotation, ownership, shipping, retention, and recovery from a full destination.
OLAP Size the log_destination path for bursty analytical output and verify that rotation or downstream ingestion cannot stall database processes.
Small nodes Use a bounded, easily rotated log_destination configuration and monitor free space; a small node should not retain redundant formats or unlimited files.

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 csvlog different csvlog
OLAP csvlog different csvlog
CRIT csvlog different csvlog
TINY csvlog different csvlog
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = csvlog (dcs); OLAP: PG9.0–19 Beta 3 = csvlog (dcs); CRIT: PG9.0–19 Beta 3 = csvlog (dcs); TINY: PG9.0–19 Beta 3 = csvlog (dcs). Advice, pending human review — Editorial inference: csvlog provides a stable structured record for collection and SQL-oriented analysis across every profile.

Common pitfalls

  • Editing log_destination without reloading configuration and verifying the effective value and subsequent behavior.
  • Combining incompatible destination, collector, filename, and rotation assumptions and then losing or overwriting logs.
  • Failing to monitor a full or unwritable log target, which can block logging or database activity depending on the path.
  • Changing log_destination globally without a rollback plan and a client or operational compatibility test.

logging_collector · log_directory · log_filename · log_rotation_age · log_rotation_size

References

14 - log_directory

log_directory is the PostgreSQL setting that defines the destination directory for log files.
Note

Fact — official short description: “Sets the destination directory for log files.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valuelog
log

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–9.6 pg_log pg_log
PG10–19 Beta 3 log log

How it works

log_directory sets the destination directory for log files. Can be specified as relative to the data directory or as absolute path. A relative path is resolved below the data directory, while an absolute path can place collector-managed files on a separate filesystem.

log_directory is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The active path is composed from log_destination, logging_collector or syslog/eventlog, file naming and permissions, rotation triggers, and external shipping or retention.

Tuning advice

Tip

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

Workload Guidance
OLTP Set log_directory as part of one end-to-end logging design. Validate collector behavior, rotation, ownership, shipping, retention, and recovery from a full destination.
OLAP Size the log_directory path for bursty analytical output and verify that rotation or downstream ingestion cannot stall database processes.
Small nodes Use a bounded, easily rotated log_directory configuration and monitor free space; a small node should not retain redundant formats or unlimited files.

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 /pg/log/postgres different {{ pg_log_dir }}
OLAP /pg/log/postgres different {{ pg_log_dir }}
CRIT /pg/log/postgres different {{ pg_log_dir }}
TINY /pg/log/postgres different {{ pg_log_dir }}
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = /pg/log/postgres (dcs); OLAP: PG9.0–19 Beta 3 = /pg/log/postgres (dcs); CRIT: PG9.0–19 Beta 3 = /pg/log/postgres (dcs); TINY: PG9.0–19 Beta 3 = /pg/log/postgres (dcs). Advice, pending human review — Editorial inference: A dedicated /pg/log/postgres path separates PostgreSQL logs from the data directory and matches the managed filesystem layout.

Common pitfalls

  • Editing log_directory without reloading configuration and verifying the effective value and subsequent behavior.
  • Combining incompatible destination, collector, filename, and rotation assumptions and then losing or overwriting logs.
  • Failing to monitor a full or unwritable log target, which can block logging or database activity depending on the path.
  • Changing log_directory globally without a rollback plan and a client or operational compatibility test.

logging_collector · log_destination · log_filename · log_rotation_age · log_rotation_size

References

15 - log_disconnections

log_disconnections is the PostgreSQL setting that controls whether PostgreSQL logs end of a session, including duration.
Note

Fact — official short description: “Logs end of a session, including duration.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesuperuser-backend
Fixed when a superuser backend starts
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

log_disconnections logs end of a session, including duration. The record is emitted at session end and includes session duration, pairing naturally with connection-start identity but not proving that every abrupt failure reached the logger.

log_disconnections has SUPERUSER_BACKEND context: configuration changes apply when a new backend session starts and require superuser-level authority; established sessions keep their startup value.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_disconnections against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_disconnections telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_disconnections useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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 on different 'on'
TINY Unmodified
Caution

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 = on (dcs); TINY: PG9.0–19 Beta 3 unmodified. Advice, pending human review — Editorial inference: CRIT records session endings and durations to complete its connection audit trail, accepting additional volume only in that profile.

Common pitfalls

  • Expecting existing sessions to inherit a new log_disconnections value even though it is fixed when each backend starts.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_disconnections globally without a rollback plan and a client or operational compatibility test.

log_statement · log_duration · log_connections · log_parameter_max_length · log_parameter_max_length_on_error

References

16 - log_duration

log_duration is the PostgreSQL setting that controls whether PostgreSQL logs the duration of each completed SQL statement.
Note

Fact — official short description: “Logs the duration of each completed SQL statement.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

log_duration logs the duration of each completed SQL statement. It emits a duration for every completed statement but does not itself emit statement text; log_statement or a duration threshold supplies text when required.

log_duration is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_duration against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_duration telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_duration useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: 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 log_duration in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Expecting duration records to contain SQL text when no statement-logging setting emits that text.

log_statement · log_connections · log_disconnections · log_parameter_max_length · log_parameter_max_length_on_error

References

17 - log_error_verbosity

log_error_verbosity is the PostgreSQL setting that defines the verbosity of logged messages.
Note

Fact — official short description: “Sets the verbosity of logged messages.”

Identity

Type , Valueenum
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Valueterse, default, verbose
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valuedefault
default

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 default default

How it works

log_error_verbosity sets the verbosity of logged messages. TERSE suppresses detail and hints, DEFAULT retains normal diagnostics, and VERBOSE adds SQLSTATE plus source file, function, and line information.

log_error_verbosity is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_error_verbosity against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_error_verbosity telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_error_verbosity useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: 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 log_error_verbosity in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_error_verbosity globally without a rollback plan and a client or operational compatibility test.

log_statement · log_duration · log_connections · log_disconnections · log_parameter_max_length · log_parameter_max_length_on_error

References

18 - log_file_mode

log_file_mode is the PostgreSQL setting that defines the file permissions for log files.
Note

Fact — official short description: “Sets the file permissions for log files.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value0511
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Value384
384

Lifecycle

Fact Value
First observed PG9.1
Present in PG9.1–19 Beta 3
Removed in No
Introduction commit 3ec694e17bc0 — Add a log_file_mode GUC that allows control of the file permissions set on log files created by the syslogger process.
Commit date 2010-07-16
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.1–19 Beta 3 384 384

How it works

log_file_mode is a chmod-style numeric mode for files newly created by logging_collector. Use a leading zero for customary octal notation: 0640 is not the same numeric value as decimal 640. The setting does not apply to syslog/eventlog output and does not change existing files.

It has SIGHUP context. After a reload, the new mode is used the next time logging_collector creates a file; reloading does not chmod the file that is currently open or historical files.

The effective access boundary also includes the PostgreSQL service account, file group, log_directory ownership and traversal permissions, shipping-agent group membership, and external retention copies. A group-readable mode is safe only when that group is controlled.

Tuning advice

Tip

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

Workload Guidance
OLTP Choose the least-privileged mode that still lets the approved collector or shipping group read new files. Verify ownership after a real rotation and explicitly remediate existing files if policy changes.
OLAP Analytical logs often contain query text and identifiers, so use the same or stricter mode; larger log volume is not a reason to broaden file access.
Small nodes Keep 0600 unless a controlled local group must ship logs; if 0640 is used, audit group membership and directory permissions rather than making files world-readable.

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 0640 different '0640'
OLAP 0640 different '0640'
CRIT 0640 different '0640'
TINY 0640 different '0640'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.1–19 Beta 3 = 0640 (dcs); OLAP: PG9.1–19 Beta 3 = 0640 (dcs); CRIT: PG9.1–19 Beta 3 = 0640 (dcs); TINY: PG9.1–19 Beta 3 = 0640 (dcs). Advice, pending human review — Editorial inference: 0640 keeps log files private from other users while allowing an operational group to read and ship them.

Common pitfalls

  • Editing log_file_mode without reloading configuration and verifying the effective value and subsequent behavior.
  • Combining incompatible destination, collector, filename, and rotation assumptions and then losing or overwriting logs.
  • Failing to monitor a full or unwritable log target, which can block logging or database activity depending on the path.
  • Writing 640 instead of octal 0640 and producing a different numeric permission mode.

logging_collector · log_destination · log_directory · log_filename · log_rotation_age · log_rotation_size

References

19 - log_filename

log_filename is the PostgreSQL setting that defines the file name pattern for log files.
Note

Fact — official short description: “Sets the file name pattern for log files.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valuepostgresql-%Y-%m-%d_%H%M%S.log
postgresql-%Y-%m-%d_%H%M%S.log

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 postgresql-%Y-%m-%d_%H%M%S.log postgresql-%Y-%m-%d_%H%M%S.log

How it works

log_filename sets the file name pattern for log files. logging_collector expands strftime escapes using log_timezone whenever it opens a new file, so repeating names must be coordinated with rotation and truncation.

log_filename is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The active path is composed from log_destination, logging_collector or syslog/eventlog, file naming and permissions, rotation triggers, and external shipping or retention.

Tuning advice

Tip

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

Workload Guidance
OLTP Use a filename pattern whose uniqueness matches rotation policy. If names repeat, combine time-based rotation, log_truncate_on_rotation, and confirmed shipping so a reused name cannot mix periods or overwrite uncollected data.
OLAP Choose a predictable period boundary for large analytical logs and ensure downstream ingestion closes the previous file before the pattern repeats; do not rely on size rotation with a non-unique name.
Small nodes A bounded weekday or date pattern is reasonable only with matching retention and free-space monitoring. Keep enough time components to prevent accidental collisions after restart or manual rotation.

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 postgresql-%a.log different 'postgresql-%a.log'
OLAP postgresql-%a.log different 'postgresql-%a.log'
CRIT postgresql-%a.log different 'postgresql-%a.log'
TINY postgresql-%a.log different 'postgresql-%a.log'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = postgresql-%a.log (dcs); OLAP: PG9.0–19 Beta 3 = postgresql-%a.log (dcs); CRIT: PG9.0–19 Beta 3 = postgresql-%a.log (dcs); TINY: PG9.0–19 Beta 3 = postgresql-%a.log (dcs). Advice, pending human review — Editorial inference: A weekday filename creates a predictable seven-name cycle intended to work with daily rotation and truncation.

Common pitfalls

  • Editing log_filename without reloading configuration and verifying the effective value and subsequent behavior.
  • Combining incompatible destination, collector, filename, and rotation assumptions and then losing or overwriting logs.
  • Failing to monitor a full or unwritable log target, which can block logging or database activity depending on the path.
  • Using a repeating strftime name without matching rotation and truncation policy, causing append growth or overwrite surprises.

logging_collector · log_destination · log_directory · log_rotation_age · log_rotation_size

References

20 - log_hostname

log_hostname is the PostgreSQL setting that controls whether PostgreSQL logs the host name in the connection logs.
Note

Fact — official short description: “Logs the host name in the connection logs.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

log_hostname logs the host name in the connection logs. By default, connection logs only show the IP address of the connecting host. If you want them to show the host name you can turn this on, but depending on your host name resolution setup it might impose a non-negligible performance penalty. Reverse DNS is performed to turn client addresses into names, which can add connection latency or stalls when name service is slow.

log_hostname is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_hostname against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_hostname telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_hostname useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: 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

  • Editing log_hostname without reloading configuration and verifying the effective value and subsequent behavior.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Turning on reverse DNS where resolver latency lies on the connection path.

application_name · cluster_name · update_process_title · log_line_prefix · log_timezone

References

21 - log_line_prefix

log_line_prefix is the PostgreSQL setting that controls information prefixed to each log line.
Note

Fact — official short description: “Controls information prefixed to each log line.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Value%m [%p]
%m [%p]

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–9.6 "" empty string
PG10–19 Beta 3 %m [%p] %m [%p]

How it works

log_line_prefix controls information prefixed to each log line. An empty string means no prefix. Percent escapes add session, user, database, process, application, and timing context; csvlog and jsonlog already carry structured fields separately.

log_line_prefix is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_line_prefix against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_line_prefix telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_line_prefix useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: 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

  • Editing log_line_prefix without reloading configuration and verifying the effective value and subsequent behavior.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Omitting process, session, database, user, or application identity needed to correlate multiline text logs.

application_name · cluster_name · update_process_title · log_timezone · log_hostname

References

22 - log_lock_failures

log_lock_failures is the PostgreSQL setting that controls whether PostgreSQL logs lock failures.
Note

Fact — official short description: “Logs lock failures.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG18
Present in PG18–19 Beta 3
Removed in No
Introduction commit 73bdcfab35ec — Rename log_lock_failure GUC to log_lock_failures for consistency.
Commit date 2025-06-03
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG18–19 Beta 3 off off

How it works

log_lock_failures was introduced in PostgreSQL 18 to emit a detailed message when a supported lock acquisition fails. In PostgreSQL 18 the supported scope is specifically lock failure caused by SELECT … NOWAIT; it is not a general logger for every NOWAIT-like command or every lock error.

It is a SUPERUSER-context setting. A superuser or a role with the appropriate SET privilege can change it per session, so role/database defaults and connection-pool reset behavior determine which sessions produce records.

It complements log_lock_waits: log_lock_waits reports waits that cross deadlock_timeout, whereas SELECT … NOWAIT fails immediately and can be reported here. The detailed message can expose relation, lock, and statement context and must follow the normal log access policy.

Tuning advice

Tip

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

Workload Guidance
OLTP Enable it for sessions where SELECT … NOWAIT failure explains latency or retry behavior, and correlate records with application retries and lock holders. Do not expect coverage of unrelated lock errors.
OLAP Analytical readers using SELECT … NOWAIT can use it during contention investigations; leave it off if those commands are absent because it supplies no broader wait telemetry.
Small nodes The normal volume is low, but verify log access and retention before enabling. Pair it with log_lock_waits and deadlock diagnostics rather than treating it as a replacement.

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 on different 'on'
OLAP Unmodified
CRIT on different 'on'
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG18–19 Beta 3 = on (dcs); OLAP: PG18–19 Beta 3 unmodified; CRIT: PG18–19 Beta 3 = on (dcs); TINY: PG18–19 Beta 3 unmodified. Advice, pending human review — Editorial inference: the override appears intended to retain detailed evidence for SELECT … NOWAIT failures in the profiles where immediate lock-failure retries or audit diagnostics are expected to be most valuable; PostgreSQL 18 does not provide broader lock-failure coverage through this GUC.

Common pitfalls

  • Assuming PostgreSQL 18 logs every lock acquisition failure; currently only SELECT … NOWAIT is supported.
  • Using it instead of log_lock_waits even though immediate failure and a wait exceeding deadlock_timeout are different events.
  • Enabling it in one pooled session and assuming other sessions inherited the value.
  • Retaining detailed lock and statement context without appropriate log access, redaction, and retention controls.

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_temp_files · log_replication_commands

References

23 - log_lock_waits

log_lock_waits is the PostgreSQL setting that controls whether PostgreSQL logs long lock waits.
Note

Fact — official short description: “Logs long lock waits.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueon
on

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–18 off off
PG19 Beta 3 on on

How it works

log_lock_waits logs long lock waits. A wait is logged after deadlock_timeout, so the diagnostic threshold and deadlock detector cadence are coupled.

log_lock_waits is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_lock_waits against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_lock_waits telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_lock_waits useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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 on same as boot 'on'
OLAP on same as boot 'on'
CRIT on same as boot 'on'
TINY on same as boot 'on'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = on (dcs); OLAP: PG9.0–19 Beta 3 = on (dcs); CRIT: PG9.0–19 Beta 3 = on (dcs); TINY: PG9.0–19 Beta 3 = on (dcs). Advice, pending human review — Editorial inference: All profiles retain long-lock-wait evidence because it is high-value for diagnosing latency and blockers at modest normal volume.

Common pitfalls

  • Changing log_lock_waits in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing deadlock_timeout without realizing it also changes when lock-wait diagnostics appear.

log_checkpoints · log_autovacuum_min_duration · log_lock_failures · log_temp_files · log_replication_commands

References

24 - log_min_duration_sample

log_min_duration_sample is the PostgreSQL setting that defines the minimum execution time above which a sample of statements will be logged. Sampling is determined by “log_statement_sample_rate”.
Note

Fact — official short description: “Sets the minimum execution time above which a sample of statements will be logged. Sampling is determined by “log_statement_sample_rate”.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Valuems
Raw unit
Range , Value-12147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / When to Log
Upstream classification
Latest boot value , Value-1
-1 ms

Lifecycle

Fact Value
First observed PG13
Present in PG13–19 Beta 3
Removed in No
Introduction commit 6e3e6cc0e884 — Allow sampling of statements depending on duration
Commit date 2019-11-04
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG13–19 Beta 3 -1 ms -1 ms

How it works

log_min_duration_sample admits completed statements at or above its duration threshold into stochastic logging controlled by log_statement_sample_rate. -1 disables this path, zero admits every completed statement, and the sample rate then decides which admitted statements are emitted.

log_min_duration_statement has higher priority. A statement that reaches its threshold is always logged and is not sampled, even if it also exceeds log_min_duration_sample. Under the extended query protocol, Parse, Bind, and Execute durations are logged separately.

It is a SUPERUSER-context session setting. Sampled entries have the same statement-text, Bind-value, correlation, overhead, and security considerations as log_min_duration_statement, so log_line_prefix and log_parameter_max_length still determine usefulness and exposure.

Tuning advice

Tip

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

Workload Guidance
OLTP Set an always-log threshold first with log_min_duration_statement, then use a lower sample threshold and measured rate for the high-volume middle band. Verify actual sample counts and sensitive-data handling under peak OLTP traffic.
OLAP Long analytical queries often exceed the always-log threshold, so sampling may provide no reduction for them. Choose thresholds from the duration distribution rather than copying OLTP values.
Small nodes Use a conservative rate and bounded statement text. A small node should avoid zero with rate 1 unless it intentionally wants every statement-duration entry.

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: PG13–19 Beta 3 unmodified; OLAP: PG13–19 Beta 3 unmodified; CRIT: PG13–19 Beta 3 unmodified; TINY: PG13–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting sampling to affect statements already captured by the higher-priority log_min_duration_statement threshold.
  • Forgetting that Parse, Bind, and Execute are timed and logged separately with the extended query protocol.
  • Setting zero with log_statement_sample_rate = 1 and unintentionally logging every completed statement duration.
  • Sampling SQL and Bind values without correlation identifiers, redaction, access control, and a measured volume budget.

log_min_messages · log_min_error_statement · log_min_duration_statement · log_statement_sample_rate · log_transaction_sample_rate

References

25 - log_min_duration_statement

Logs every completed statement whose duration reaches a threshold. It is a deterministic slow-query capture control, distinct from sampling and from statement cancellation.
Note

Fact — official short description: “Sets the minimum execution time above which all statements will be logged.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Valuems
Raw unit
Range , Value-12147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / When to Log
Upstream classification
Latest boot value , Value-1
-1 ms

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 -1 ms -1 ms

How it works

The value is a duration in milliseconds when no unit is written. A value of -1 disables duration-based statement logging, zero logs every completed statement, and a positive value logs statements at or above the threshold.

Statements selected by this setting are always logged rather than sampled, so it takes priority over log_min_duration_sample. Under the extended query protocol, Parse, Bind, and Execute durations can appear separately.

This parameter observes and records completed work; it does not stop slow statements. statement_timeout is the separate execution-cancellation control.

Tuning advice

Tip

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

Workload Guidance
OLTP Choose a threshold from the application’s latency objective and expected log volume. At high QPS, combine a meaningful hard threshold with sampled logging for the faster population.
OLAP Use a higher threshold so normal long analytical work does not flood logs. Pair logs with query identifiers and workload labels so repeated reports remain actionable.
Small nodes A low threshold can be useful while tuning, but watch disk use and rotation. Raise it or switch to sampling when logging becomes a measurable part of the workload.

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 100 different 100
OLAP 1000 different 1000
CRIT 100 different 100
TINY 100 different 100
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = 100 (dcs); OLAP: PG9.0–19 Beta 3 = 1000 (dcs); CRIT: PG9.0–19 Beta 3 = 100 (dcs); TINY: PG9.0–19 Beta 3 = 100 (dcs). Advice, pending human review — Editorial hypothesis, pending maintainer review: Pigsty opts into deterministic slow-query evidence, while OLAP uses a looser threshold to accommodate naturally longer analytical statements.

Common pitfalls

  • Low thresholds on high-throughput systems can create extreme log volume and I/O.
  • SQL text can contain sensitive literals and must be protected like application data.
  • It logs slow statements but does not cancel them; use statement_timeout for that goal.
  • Extended-protocol phases may be logged separately and need session or PID correlation.
  • Interactions with log_statement, sampling, and log_line_prefix can confuse duplicate or fragmented entries.

log_min_duration_sample · log_statement_sample_rate · log_statement · log_duration · log_line_prefix · statement_timeout

References

26 - log_min_error_statement

log_min_error_statement is the PostgreSQL setting that causes all statements generating error at or above this level to be logged.
Note

Fact — official short description: “Causes all statements generating error at or above this level to be logged.”

Identity

Type , Valueenum
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Valuedebug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic
— for non-enum types
Category , ValueReporting and Logging / When to Log
Upstream classification
Latest boot value , Valueerror
error

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 error error

How it works

log_min_error_statement causes all statements generating error at or above this level to be logged. Each level includes all the levels that follow it. The later the level, the fewer messages are sent. It governs whether the SQL statement associated with an error-level message is included; log_min_messages separately decides whether the message itself is emitted.

log_min_error_statement is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_min_error_statement against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_min_error_statement telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_min_error_statement useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: 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 log_min_error_statement in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_min_error_statement globally without a rollback plan and a client or operational compatibility test.

log_min_messages · log_min_duration_statement · log_min_duration_sample · log_statement_sample_rate · log_transaction_sample_rate

References

27 - log_min_messages

log_min_messages is the PostgreSQL setting that defines the message levels that are logged.
Note

Fact — official short description: “Sets the message levels that are logged.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / When to Log
Upstream classification
Latest boot value , Valuewarning
warning

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 warning warning

How it works

log_min_messages sets the message levels that are logged. Each level includes all the levels that follow it. The later the level, the fewer messages are sent. The server-log severity ordering has special placement for LOG and differs from client_min_messages, so a threshold name cannot be copied blindly between them.

log_min_messages is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_min_messages against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_min_messages telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_min_messages useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: 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 log_min_messages in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_min_messages globally without a rollback plan and a client or operational compatibility test.

log_min_error_statement · log_min_duration_statement · log_min_duration_sample · log_statement_sample_rate · log_transaction_sample_rate

References

28 - log_parameter_max_length

log_parameter_max_length is the PostgreSQL setting that defines the maximum length in bytes of data logged for bind parameter values when logging statements.
Note

Fact — official short description: “Sets the maximum length in bytes of data logged for bind parameter values when logging statements.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , ValueB
Raw unit
Range , Value-11073741823
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Value-1
-1 B

Lifecycle

Fact Value
First observed PG13
Present in PG13–19 Beta 3
Removed in No
Introduction commit 0b34e7d307e6 — Improve user control over truncation of logged bind-parameter values.
Commit date 2020-04-02
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG13–19 Beta 3 -1 B -1 B

How it works

log_parameter_max_length controls Bind values attached to non-error statement-logging messages. Zero suppresses them, -1 allows full values, and a positive byte count truncates each textual value to that limit.

It applies to messages produced by log_statement, log_min_duration_statement, and related statement-logging settings. Any nonzero value adds work; parameters sent in binary form must be converted to text before they can be logged.

It is a SUPERUSER-context session setting and is independent of log_parameter_max_length_on_error. The normal and error paths therefore need separate confidentiality and overhead decisions.

Tuning advice

Tip

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

Workload Guidance
OLTP Keep zero when Bind values may contain credentials or regulated data. If diagnostics require values, choose the smallest useful positive limit and measure binary-bind conversion cost under peak OLTP traffic.
OLAP Analytical parameters can be large arrays or predicates; use a bounded positive limit for a short diagnostic window rather than -1, and verify logs remain useful after truncation.
Small nodes Use zero by default. Full values consume disk and conversion CPU that a small node cannot absorb safely, and truncation is not redaction.

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: PG13–19 Beta 3 unmodified; OLAP: PG13–19 Beta 3 unmodified; CRIT: PG13–19 Beta 3 unmodified; TINY: PG13–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Using -1 and exposing complete credentials, tokens, or large payloads in normal statement logs.
  • Treating truncation as redaction; a sensitive prefix can remain fully visible.
  • Ignoring text-conversion overhead for binary Bind parameters when the value is nonzero.
  • Assuming this setting also limits error-path parameters controlled by log_parameter_max_length_on_error.

log_statement · log_duration · log_connections · log_disconnections · log_parameter_max_length_on_error

References

29 - log_parameter_max_length_on_error

log_parameter_max_length_on_error is the PostgreSQL setting that defines the maximum length in bytes of data logged for bind parameter values when logging statements, on error.
Note

Fact — official short description: “Sets the maximum length in bytes of data logged for bind parameter values when logging statements, on error.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , ValueB
Raw unit
Range , Value-11073741823
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Value0
0 B

Lifecycle

Fact Value
First observed PG13
Present in PG13–19 Beta 3
Removed in No
Introduction commit 0b34e7d307e6 — Improve user control over truncation of logged bind-parameter values.
Commit date 2020-04-02
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG13–19 Beta 3 0 B 0 B

How it works

log_parameter_max_length_on_error controls Bind values included in error reports. Zero, the default, suppresses them; -1 permits complete values; a positive byte count truncates each textual value to that limit.

For any nonzero value PostgreSQL must preserve textual parameter representations at the start of every statement in case an error occurs. That overhead is paid even by successful statements, and binary parameters require conversion rather than a simple text copy.

It is a USER-context session setting and is independent of log_parameter_max_length, so an application can accidentally expose values on errors even when normal statement logging suppresses them. Error detail, access, redaction, and retention must be reviewed together.

Tuning advice

Tip

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

Workload Guidance
OLTP Keep zero unless error diagnosis specifically requires bind values. Any nonzero value adds conversion and retained-memory work to every statement, so prefer a bounded positive value scoped by role, database, or session.
OLAP Use a bounded positive limit only during controlled diagnosis of parameterized analytical jobs. Budget textual conversion and retained parameter memory for successful statements as well as failures.
Small nodes Prefer zero. If error-path binds are essential, choose a short limit, scope it narrowly, and verify both memory overhead and secret-redaction policy before enabling it.

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: PG13–19 Beta 3 unmodified; OLAP: PG13–19 Beta 3 unmodified; CRIT: PG13–19 Beta 3 unmodified; TINY: PG13–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Assuming the conversion and memory cost is paid only when a statement fails; every statement pays it when the value is nonzero.
  • Using -1 and exposing complete secrets or large payloads in error reports.
  • Ignoring textual conversion cost for binary Bind values and retained representations for successful statements.
  • Assuming log_parameter_max_length also protects error paths; the two limits are independent.

log_statement · log_duration · log_connections · log_disconnections · log_parameter_max_length

References

30 - log_recovery_conflict_waits

log_recovery_conflict_waits is the PostgreSQL setting that controls whether PostgreSQL logs standby recovery conflict waits.
Note

Fact — official short description: “Logs standby recovery conflict waits.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG14
Present in PG14–19 Beta 3
Removed in No
Introduction commit 0650ff23038b — Add GUC to log long wait times on recovery conflicts.
Commit date 2021-01-08
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG14–19 Beta 3 off off

How it works

log_recovery_conflict_waits logs standby recovery conflict waits. On a standby, recovery conflict waits are reported after deadlock_timeout, exposing replay delays before cancellation is necessarily required.

log_recovery_conflict_waits is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_recovery_conflict_waits against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_recovery_conflict_waits telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_recovery_conflict_waits useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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

  • Editing log_recovery_conflict_waits without reloading configuration and verifying the effective value and subsequent behavior.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_recovery_conflict_waits globally without a rollback plan and a client or operational compatibility test.

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_temp_files · log_replication_commands

References

31 - log_replication_commands

log_replication_commands is the PostgreSQL setting that controls whether PostgreSQL logs each replication command.
Note

Fact — official short description: “Logs each replication command.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG9.5
Present in PG9.5–19 Beta 3
Removed in No
Introduction commit 4ad2a548050f — Add GUC to enable logging of replication commands.
Commit date 2014-09-13
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.5–19 Beta 3 off off

How it works

log_replication_commands logs each replication command. It covers replication-protocol commands as well as SQL replication commands and can therefore expose replication topology and slot activity.

log_replication_commands is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_replication_commands against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_replication_commands telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_replication_commands useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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 on different 'on'
OLAP on different 'on'
CRIT on different 'on'
TINY on different 'on'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.5–19 Beta 3 = on (dcs); OLAP: PG9.5–19 Beta 3 = on (dcs); CRIT: PG9.5–19 Beta 3 = on (dcs); TINY: PG9.5–19 Beta 3 = on (dcs). Advice, pending human review — Editorial inference: Replication command history supports diagnosing slots, senders, failover, and topology changes across managed clusters.

Common pitfalls

  • Changing log_replication_commands in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_replication_commands globally without a rollback plan and a client or operational compatibility test.

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_temp_files

References

32 - log_rotation_age

log_rotation_age is the PostgreSQL setting that defines the amount of time to wait before forcing log file rotation.
Note

Fact — official short description: “Sets the amount of time to wait before forcing log file rotation.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Valuemin
Raw unit
Range , Value035791394
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Value1440
1 d

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 1440 min 1 d

How it works

log_rotation_age sets the amount of time to wait before forcing log file rotation. 0 disables time-based creation of new log files. The collector opens a new file after the interval; zero disables this trigger but leaves size-based or external rotation possible.

log_rotation_age is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The active path is composed from log_destination, logging_collector or syslog/eventlog, file naming and permissions, rotation triggers, and external shipping or retention.

Tuning advice

Tip

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

Workload Guidance
OLTP Set log_rotation_age from the maximum time a file may remain open and the shipping/retention boundary. Confirm that the filename pattern creates a distinct or intentionally reusable name at that interval.
OLAP Long analytical bursts do not require a different clock by themselves; choose an interval that lets downstream systems close and ingest files predictably without producing impractically large objects.
Small nodes Prefer a simple daily or shorter interval that keeps failure blast radius bounded. Zero disables time rotation and is safe only when size-based or external rotation is authoritative and tested.

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 1d same as boot '1d'
OLAP 1d same as boot '1d'
CRIT 1d same as boot '1d'
TINY 1d same as boot '1d'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = 1d (dcs); OLAP: PG9.0–19 Beta 3 = 1d (dcs); CRIT: PG9.0–19 Beta 3 = 1d (dcs); TINY: PG9.0–19 Beta 3 = 1d (dcs). Advice, pending human review — Editorial inference: Daily rotation matches the weekday filename cycle and creates predictable operational boundaries.

Common pitfalls

  • Editing log_rotation_age without reloading configuration and verifying the effective value and subsequent behavior.
  • Combining incompatible destination, collector, filename, and rotation assumptions and then losing or overwriting logs.
  • Failing to monitor a full or unwritable log target, which can block logging or database activity depending on the path.
  • Changing log_rotation_age globally without a rollback plan and a client or operational compatibility test.

logging_collector · log_destination · log_directory · log_filename · log_rotation_size

References

33 - log_rotation_size

log_rotation_size is the PostgreSQL setting that defines the maximum size a log file can reach before being rotated.
Note

Fact — official short description: “Sets the maximum size a log file can reach before being rotated.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , ValuekB
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Value10240
10 MiB

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 10240 kB 10 MiB

How it works

log_rotation_size sets the maximum size a log file can reach before being rotated. 0 disables size-based creation of new log files. The collector rotates when the current file reaches approximately this size; zero disables the size trigger but not time-based rotation.

log_rotation_size is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The active path is composed from log_destination, logging_collector or syslog/eventlog, file naming and permissions, rotation triggers, and external shipping or retention.

Tuning advice

Tip

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

Workload Guidance
OLTP Use a nonzero log_rotation_size when file size itself must be bounded, and coordinate it with a filename that cannot collide during multiple rotations in one time period. If set to zero, verify that time-based rotation and disk alerts provide the bound instead.
OLAP Analytical bursts can cross a size threshold repeatedly; test the resulting filename suffixes, shipping throughput, and maximum single-file size rather than choosing a larger number by habit.
Small nodes A modest size cap limits damage from a logging spike, but too-small files increase metadata and shipping overhead. Zero is acceptable only with a proven time-based cycle and free-space guardrail.

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 0 different '0'
OLAP 0 different '0'
CRIT 0 different '0'
TINY 0 different '0'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = 0 (dcs); OLAP: PG9.0–19 Beta 3 = 0 (dcs); CRIT: PG9.0–19 Beta 3 = 0 (dcs); TINY: PG9.0–19 Beta 3 = 0 (dcs). Advice, pending human review — Editorial inference: Disabling size rotation appears intended to make daily time rotation the single file-cycle authority; disk safeguards still need independent verification.

Common pitfalls

  • Editing log_rotation_size without reloading configuration and verifying the effective value and subsequent behavior.
  • Combining incompatible destination, collector, filename, and rotation assumptions and then losing or overwriting logs.
  • Failing to monitor a full or unwritable log target, which can block logging or database activity depending on the path.
  • Setting zero without a working time-based or external rotation policy and allowing unbounded growth.

logging_collector · log_destination · log_directory · log_filename · log_rotation_age

References

34 - log_startup_progress_interval

log_startup_progress_interval is the PostgreSQL setting that defines the interval between progress updates for long-running startup operations.
Note

Fact — official short description: “Time between progress updates for long-running startup operations.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Valuems
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / When to Log
Upstream classification
Latest boot value , Value10000
10 s

Lifecycle

Fact Value
First observed PG15
Present in PG15–19 Beta 3
Removed in No
Introduction commit 9ce346eabf35 — Report progress of startup operations that take a long time.
Commit date 2021-10-25
Discussion thread 1 · thread 2

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG15–19 Beta 3 10000 ms 10 s

How it works

log_startup_progress_interval defines the interval between progress updates for long-running startup operations. 0 disables progress updates. Startup processes emit periodic progress for operations such as WAL replay when they exceed the interval; zero disables these updates.

log_startup_progress_interval is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_startup_progress_interval against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_startup_progress_interval telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_startup_progress_interval useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: PG15–19 Beta 3 unmodified; OLAP: PG15–19 Beta 3 unmodified; CRIT: PG15–19 Beta 3 unmodified; TINY: PG15–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing log_startup_progress_interval without reloading configuration and verifying the effective value and subsequent behavior.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_startup_progress_interval globally without a rollback plan and a client or operational compatibility test.

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_temp_files · log_replication_commands

References

35 - log_statement

log_statement is the PostgreSQL setting that defines the type of statements logged.
Note

Fact — official short description: “Sets the type of statements logged.”

Identity

Type , Valueenum
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Valuenone, ddl, mod, all
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Valuenone
none

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 none none

How it works

log_statement selects none, ddl, mod, or all. ddl logs data-definition commands; mod adds data-changing commands; all logs every statement that reaches the logging point. PREPARE, EXECUTE, and EXPLAIN ANALYZE follow the contained command’s class.

With the extended query protocol, logging occurs when Execute is received and includes Bind parameter values. Even all does not log a simple statement that fails basic parsing, nor an extended-protocol statement that fails before Execute during parse analysis or planning; log_min_error_statement is required for those error paths.

It is a SUPERUSER-context session setting. Statement text and Bind values can expose personal data, tokens, and even plaintext passwords, so selection, access, redaction, transport, and retention must be treated as a security control as well as an observability choice.

Tuning advice

Tip

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

Workload Guidance
OLTP Keep none or ddl as the routine OLTP baseline and use duration thresholds or sampling for query performance. Before enabling mod/all, test volume and a concrete redaction/access policy for SQL text and Bind values.
OLAP Use a role- or session-scoped window for analytical troubleshooting rather than all cluster-wide. Long generated SQL and large Bind values can dominate logs and expose source data.
Small nodes Prefer ddl or targeted thresholds; all can overwhelm disk and reveal secrets even on a quiet node. Keep log_min_error_statement configured for syntax/parse failures that log_statement misses.

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 ddl different ddl
OLAP ddl different ddl
CRIT ddl different ddl
TINY ddl different ddl
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = ddl (dcs); OLAP: PG9.0–19 Beta 3 = ddl (dcs); CRIT: PG9.0–19 Beta 3 = ddl (dcs); TINY: PG9.0–19 Beta 3 = ddl (dcs). Advice, pending human review — Editorial inference: Logging DDL gives every profile a schema-change trail without paying the confidentiality and volume cost of all statements.

Common pitfalls

  • Assuming all captures syntax errors or extended-protocol failures before Execute; use log_min_error_statement for those paths.
  • Forgetting that extended-protocol Execute logging includes Bind parameter values.
  • Logging SQL that contains plaintext passwords, bearer tokens, personal data, or application secrets without redaction and strict access controls.
  • Enabling mod or all cluster-wide without bounding log throughput, disk, shipping, and retention.

log_duration · log_connections · log_disconnections · log_parameter_max_length · log_parameter_max_length_on_error

References

36 - log_statement_sample_rate

log_statement_sample_rate is the PostgreSQL setting that defines the fraction of statements exceeding “log_min_duration_sample” to be logged.
Note

Fact — official short description: “Fraction of statements exceeding “log_min_duration_sample” to be logged.”

Identity

Type , Valuereal
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value01
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / When to Log
Upstream classification
Latest boot value , Value1
1

Lifecycle

Fact Value
First observed PG13
Present in PG13–19 Beta 3
Removed in No
Introduction commit 88bdbd3f7460 — Add log_statement_sample_rate parameter
Commit date 2018-11-29
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG13–19 Beta 3 1 1

How it works

log_statement_sample_rate sets the fraction of statements exceeding “log_min_duration_sample” to be logged. Use a value between 0.0 (never log) and 1.0 (always log). This probability is evaluated only for statements admitted by log_min_duration_sample; it does not sample log_statement or log_min_duration_statement output.

log_statement_sample_rate is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_statement_sample_rate against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_statement_sample_rate telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_statement_sample_rate useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: PG13–19 Beta 3 unmodified; OLAP: PG13–19 Beta 3 unmodified; CRIT: PG13–19 Beta 3 unmodified; TINY: PG13–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing log_statement_sample_rate in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Expecting it to sample all statement logging even though it only gates log_min_duration_sample.

log_min_messages · log_min_error_statement · log_min_duration_statement · log_min_duration_sample · log_transaction_sample_rate

References

37 - log_temp_files

log_temp_files is the PostgreSQL setting that controls whether PostgreSQL logs the use of temporary files larger than this number of kilobytes.
Note

Fact — official short description: “Log the use of temporary files larger than this number of kilobytes.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , ValuekB
Raw unit
Range , Value-12147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , Value-1
-1 kB

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 -1 kB -1 kB

How it works

log_temp_files logs the use of temporary files larger than this number of kilobytes. -1 disables logging temporary files. 0 means log all temporary files. A temporary file is reported when it is deleted, with its name and size; -1 disables records and zero includes every file.

log_temp_files is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_temp_files against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_temp_files telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_temp_files useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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 1024 different 1024
OLAP 1024 different 1024
CRIT 1024 different 1024
TINY 1024 different 1024
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = 1024 (dcs); OLAP: PG9.0–19 Beta 3 = 1024 (dcs); CRIT: PG9.0–19 Beta 3 = 1024 (dcs); TINY: PG9.0–19 Beta 3 = 1024 (dcs). Advice, pending human review — Editorial inference: A 1 MiB threshold surfaces meaningful executor spills while filtering very small temporary files.

Common pitfalls

  • Changing log_temp_files in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_temp_files globally without a rollback plan and a client or operational compatibility test.

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_replication_commands

References

38 - log_timezone

log_timezone is the PostgreSQL setting that defines the time zone to use in log messages.
Note

Fact — official short description: “Sets the time zone to use in log messages.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / What to Log
Upstream classification
Latest boot value , ValueGMT
GMT

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0 UNKNOWN UNKNOWN
PG9.1 not set
PG9.2–19 Beta 3 GMT GMT

How it works

log_timezone sets the time zone to use in log messages. It affects timestamps rendered by the logging system, including filename expansion context, but does not change session TimeZone or stored timestamps.

log_timezone is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Use one cluster-wide timezone, normally UTC, so every session’s server-log timestamps correlate across hosts, replicas, failovers, and centralized ingestion. Test parsers and log_filename expansion before changing it.
OLAP Analytical workload type does not justify a separate log timezone. Keep UTC or the fleet standard and convert to local civil time only in reporting tools, especially across DST transitions.
Small nodes Keep UTC unless an existing operational pipeline requires another stable zone. Changing log_timezone does not reduce log volume; it changes timestamp interpretation and potentially rotated filenames.

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 UTC different 'UTC'
OLAP UTC different 'UTC'
CRIT UTC different 'UTC'
TINY UTC different 'UTC'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = UTC (dcs); OLAP: PG9.0–19 Beta 3 = UTC (dcs); CRIT: PG9.0–19 Beta 3 = UTC (dcs); TINY: PG9.0–19 Beta 3 = UTC (dcs). Advice, pending human review — Editorial inference: UTC makes timestamps comparable across hosts, regions, failovers, and centralized log systems.

Common pitfalls

  • Editing log_timezone without reloading configuration and verifying the effective value and subsequent behavior.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Changing log_timezone globally without a rollback plan and a client or operational compatibility test.

DateStyle · IntervalStyle · TimeZone · lc_time · timezone_abbreviations

References

39 - log_transaction_sample_rate

log_transaction_sample_rate is the PostgreSQL setting that defines the fraction of transactions from which to log all statements.
Note

Fact — official short description: “Sets the fraction of transactions from which to log all statements.”

Identity

Type , Valuereal
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value01
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / When to Log
Upstream classification
Latest boot value , Value0
0

Lifecycle

Fact Value
First observed PG12
Present in PG12–19 Beta 3
Removed in No
Introduction commit 799e220346f1 — Log all statements from a sample of transactions
Commit date 2019-04-03
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG12–19 Beta 3 0 0

How it works

log_transaction_sample_rate sets the fraction of transactions from which to log all statements. Use a value between 0.0 (never log) and 1.0 (log all statements for all transactions). A sampled transaction logs every statement, preserving transaction context but potentially creating bursts from long or chatty transactions.

log_transaction_sample_rate is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness.

Tuning advice

Tip

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

Workload Guidance
OLTP Tune log_transaction_sample_rate against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.
OLAP Analytical jobs can justify richer log_transaction_sample_rate telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.
Small nodes Keep log_transaction_sample_rate useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency.

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: PG12–19 Beta 3 unmodified; OLAP: PG12–19 Beta 3 unmodified; CRIT: PG12–19 Beta 3 unmodified; TINY: PG12–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing log_transaction_sample_rate in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.
  • Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.
  • Underestimating bursts when one sampled, chatty transaction causes every statement to be logged.

log_min_messages · log_min_error_statement · log_min_duration_statement · log_min_duration_sample · log_statement_sample_rate

References

40 - log_truncate_on_rotation

log_truncate_on_rotation is the PostgreSQL setting that controls whether PostgreSQL truncates existing log files of same name during log rotation.
Note

Fact — official short description: “Truncate existing log files of same name during log rotation.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valueoff
off

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

log_truncate_on_rotation truncates existing log files of same name during log rotation. Truncation occurs when time-based rotation reuses an existing filename; size rotation and other causes do not apply the same overwrite rule.

log_truncate_on_rotation is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The active path is composed from log_destination, logging_collector or syslog/eventlog, file naming and permissions, rotation triggers, and external shipping or retention.

Tuning advice

Tip

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

Workload Guidance
OLTP Enable log_truncate_on_rotation only when time-based rotation intentionally reuses a filename and the previous file has been durably shipped or is meant to be replaced. Leave it off for unique timestamped names.
OLAP For analytical logs, confirm that long-running ingestion has finished before a repeating name is truncated; use unique names when completion cannot be guaranteed.
Small nodes A short repeating cycle can bound disk use, but truncation is not retention management. Monitor shipping and backups so the next time rotation cannot erase the only copy.

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 on different 'on'
OLAP on different 'on'
CRIT on different 'on'
TINY on different 'on'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = on (dcs); OLAP: PG9.0–19 Beta 3 = on (dcs); CRIT: PG9.0–19 Beta 3 = on (dcs); TINY: PG9.0–19 Beta 3 = on (dcs). Advice, pending human review — Editorial inference: Truncation closes the weekday filename cycle so a reused daily name replaces the prior week’s file instead of appending forever.

Common pitfalls

  • Editing log_truncate_on_rotation without reloading configuration and verifying the effective value and subsequent behavior.
  • Combining incompatible destination, collector, filename, and rotation assumptions and then losing or overwriting logs.
  • Failing to monitor a full or unwritable log target, which can block logging or database activity depending on the path.
  • Expecting truncation on every rotation path; it is tied to time-based reuse of an existing filename.

logging_collector · log_destination · log_directory · log_filename · log_rotation_age · log_rotation_size

References

41 - logging_collector

logging_collector is the PostgreSQL setting that controls whether PostgreSQL starts a subprocess to capture stderr, csvlog and/or jsonlog into log files.
Note

Fact — official short description: “Start a subprocess to capture stderr, csvlog and/or jsonlog into log files.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valueoff
off

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

logging_collector starts a subprocess to capture stderr, csvlog and/or jsonlog into log files. The collector drains server stderr through a pipe and writes configured file formats; it is designed not to lose messages, so extreme backpressure can block emitters.

logging_collector is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

The active path is composed from log_destination, logging_collector or syslog/eventlog, file naming and permissions, rotation triggers, and external shipping or retention.

Tuning advice

Tip

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

Workload Guidance
OLTP Enable logging_collector when csvlog/jsonlog or collector-managed stderr files are required, then load-test pipe throughput, rotation, disk-full behavior, shipping, and restart. It is a POSTMASTER setting and needs a controlled restart.
OLAP Analytical workloads can emit large bursts at query completion; size collector and destination I/O for that burst and verify database processes do not stall behind collector backpressure.
Small nodes Use one required format and bounded retention. A small node still needs disk alerts because the collector is designed not to lose messages and can propagate backpressure when its destination is slow or full.

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 on different 'on'
OLAP on different 'on'
CRIT on different 'on'
TINY on different 'on'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = on (dcs); OLAP: PG9.0–19 Beta 3 = on (dcs); CRIT: PG9.0–19 Beta 3 = on (dcs); TINY: PG9.0–19 Beta 3 = on (dcs). Advice, pending human review — Editorial inference: The collector is required for the configured csvlog file pipeline and gives all profiles managed local log files.

Common pitfalls

  • Expecting a reload or SET to activate logging_collector, although it requires a controlled server restart.
  • Combining incompatible destination, collector, filename, and rotation assumptions and then losing or overwriting logs.
  • Failing to monitor a full or unwritable log target, which can block logging or database activity depending on the path.
  • Enabling file-oriented destinations without the collector, or starting the collector without a disk and retention plan.

log_destination · log_directory · log_filename · log_rotation_age · log_rotation_size

References

42 - silent_mode

silent_mode — Runs the server silently. Observed in PG9.0–9.1; its last measured boot default is off in PG9.1, with postmaster context. It was removed in PG9.2.
Note

Fact — official short description: “Runs the server silently.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–9.1
Removed in PG9.2
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–9.1 off off

How it works

PostgreSQL describes silent_mode as follows: “Runs the server silently.” The value is fixed when the server starts, so changing it requires a controlled restart. The atlas measures it in PG9.0–9.1; boot_val is the compiled or initialized baseline, not proof of a running cluster’s effective setting.

Silent mode was an early background-server convenience that redirected or suppressed terminal-facing output. It was removed in PostgreSQL 9.2; service managers and PostgreSQL’s logging_collector, log_destination, and log_directory settings now provide explicit process and log ownership.

Read it together with logging_collector, log_destination, log_directory, log_filename. Check SHOW and pg_settings on the target server, verify the source and pending_restart fields, and compare workload, logs, and resource metrics before and after any change.

Tuning advice

Tip

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

Workload Guidance
OLTP Do not add this retired name to a current OLTP configuration. Translate its intent to the documented successor, test the migration under connection and write concurrency, and remove stale automation that still emits it.
OLAP For an upgrade or analytical estate, inventory every generated configuration before cutover. Map the old control to its successor and compare plans, throughput, WAL, or logging behavior rather than assuming the old numeric value is portable.
Small nodes Delete the obsolete override after recording why it existed. On a small node, prefer the successor’s default until measurements justify a new value; an unknown startup parameter can otherwise stop the server.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG9.1; 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: PG9.0–9.1 unmodified; OLAP: PG9.0–9.1 unmodified; CRIT: PG9.0–9.1 unmodified; TINY: PG9.0–9.1 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Treating the measured boot_val for silent_mode as proof of the effective value on an initialized or managed cluster.
  • Applying a change as though it were immediate while pg_settings reports postmaster context.
  • Changing this setting in isolation without checking the linked limits, observability, and rollback path.
  • Copying the removed name into a modern postgresql.conf instead of migrating to its documented successor.

logging_collector · log_destination · log_directory · log_filename

References

43 - syslog_facility

syslog_facility is the PostgreSQL setting that defines the syslog “facility” to be used when syslog enabled.
Note

Fact — official short description: “Sets the syslog “facility” to be used when syslog enabled.”

Identity

Type , Valueenum
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Valuelocal0, local1, local2, local3, local4, local5, local6, local7
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valuelocal0
local0

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 local0 local0

How it works

syslog_facility sets the syslog “facility” to be used when syslog enabled. It selects the syslog routing facility only when syslog is listed in log_destination; the system logger maps that facility to storage or forwarding rules.

syslog_facility is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It is active only when syslog appears in log_destination, after which the facility, ident, sequence, splitting, host daemon, and remote receiver jointly define record delivery.

Tuning advice

Tip

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

Workload Guidance
OLTP Set syslog_facility to match the receiving syslog daemon’s routing, framing, deduplication, and message-size contract; validate failover and backpressure with the real collector.
OLAP Test syslog_facility under bursty analytical messages and multiline plans so splitting or receiver limits do not destroy record boundaries.
Small nodes Prefer the host’s established syslog convention for syslog_facility; avoid parallel local-file retention unless it has an explicit purpose and size limit.

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: 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

  • Editing syslog_facility without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing PostgreSQL framing or identifiers without testing the host daemon and remote receiver as one pipeline.
  • Assuming syslog preserves unlimited message size, multiline boundaries, ordering, or repeated records by default.
  • Changing syslog_facility globally without a rollback plan and a client or operational compatibility test.

log_destination · syslog_ident · syslog_sequence_numbers · syslog_split_messages · logging_collector

References

44 - syslog_ident

syslog_ident is the PostgreSQL setting that defines the program name used to identify PostgreSQL messages in syslog.
Note

Fact — official short description: “Sets the program name used to identify PostgreSQL messages in syslog.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valuepostgres
postgres

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 postgres postgres

How it works

syslog_ident sets the program name used to identify PostgreSQL messages in syslog. The ident labels PostgreSQL records in syslog and can distinguish clusters when combined with facility or host metadata.

syslog_ident is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It is active only when syslog appears in log_destination, after which the facility, ident, sequence, splitting, host daemon, and remote receiver jointly define record delivery.

Tuning advice

Tip

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

Workload Guidance
OLTP Set syslog_ident to match the receiving syslog daemon’s routing, framing, deduplication, and message-size contract; validate failover and backpressure with the real collector.
OLAP Test syslog_ident under bursty analytical messages and multiline plans so splitting or receiver limits do not destroy record boundaries.
Small nodes Prefer the host’s established syslog convention for syslog_ident; avoid parallel local-file retention unless it has an explicit purpose and size limit.

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: 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

  • Editing syslog_ident without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing PostgreSQL framing or identifiers without testing the host daemon and remote receiver as one pipeline.
  • Assuming syslog preserves unlimited message size, multiline boundaries, ordering, or repeated records by default.
  • Changing syslog_ident globally without a rollback plan and a client or operational compatibility test.

log_destination · syslog_facility · syslog_sequence_numbers · syslog_split_messages · logging_collector

References

45 - syslog_sequence_numbers

syslog_sequence_numbers is the PostgreSQL setting that adds sequence number to syslog messages to avoid duplicate suppression.
Note

Fact — official short description: “Add sequence number to syslog messages to avoid duplicate suppression.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valueon
on

Lifecycle

Fact Value
First observed PG9.6
Present in PG9.6–19 Beta 3
Removed in No
Introduction commit f4c454e9ba52 — Add syslog_sequence_numbers parameter
Commit date 2016-02-26
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.6–19 Beta 3 on on

How it works

syslog_sequence_numbers adds sequence number to syslog messages to avoid duplicate suppression. A monotonically increasing sequence prefix prevents some syslog implementations from collapsing repeated messages and helps detect gaps.

syslog_sequence_numbers is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It is active only when syslog appears in log_destination, after which the facility, ident, sequence, splitting, host daemon, and remote receiver jointly define record delivery.

Tuning advice

Tip

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

Workload Guidance
OLTP Set syslog_sequence_numbers to match the receiving syslog daemon’s routing, framing, deduplication, and message-size contract; validate failover and backpressure with the real collector.
OLAP Test syslog_sequence_numbers under bursty analytical messages and multiline plans so splitting or receiver limits do not destroy record boundaries.
Small nodes Prefer the host’s established syslog convention for syslog_sequence_numbers; avoid parallel local-file retention unless it has an explicit purpose and size limit.

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: PG9.6–19 Beta 3 unmodified; OLAP: PG9.6–19 Beta 3 unmodified; CRIT: PG9.6–19 Beta 3 unmodified; TINY: PG9.6–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing syslog_sequence_numbers without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing PostgreSQL framing or identifiers without testing the host daemon and remote receiver as one pipeline.
  • Assuming syslog preserves unlimited message size, multiline boundaries, ordering, or repeated records by default.
  • Changing syslog_sequence_numbers globally without a rollback plan and a client or operational compatibility test.

log_destination · syslog_facility · syslog_ident · syslog_split_messages · logging_collector

References

46 - syslog_split_messages

syslog_split_messages is the PostgreSQL setting that splits messages sent to syslog by lines and to fit into 1024 bytes.
Note

Fact — official short description: “Split messages sent to syslog by lines and to fit into 1024 bytes.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Where to Log
Upstream classification
Latest boot value , Valueon
on

Lifecycle

Fact Value
First observed PG9.6
Present in PG9.6–19 Beta 3
Removed in No
Introduction commit fc201dfd9505 — Add syslog_split_messages parameter
Commit date 2016-03-15
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.6–19 Beta 3 on on

How it works

syslog_split_messages splits messages sent to syslog by lines and to fit into 1024 bytes. When enabled, PostgreSQL splits at line boundaries and the traditional 1024-byte limit; disabling it relies on the receiver to handle multiline or long payloads.

syslog_split_messages is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

It is active only when syslog appears in log_destination, after which the facility, ident, sequence, splitting, host daemon, and remote receiver jointly define record delivery.

Tuning advice

Tip

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

Workload Guidance
OLTP Set syslog_split_messages to match the receiving syslog daemon’s routing, framing, deduplication, and message-size contract; validate failover and backpressure with the real collector.
OLAP Test syslog_split_messages under bursty analytical messages and multiline plans so splitting or receiver limits do not destroy record boundaries.
Small nodes Prefer the host’s established syslog convention for syslog_split_messages; avoid parallel local-file retention unless it has an explicit purpose and size limit.

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: PG9.6–19 Beta 3 unmodified; OLAP: PG9.6–19 Beta 3 unmodified; CRIT: PG9.6–19 Beta 3 unmodified; TINY: PG9.6–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing syslog_split_messages without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing PostgreSQL framing or identifiers without testing the host daemon and remote receiver as one pipeline.
  • Assuming syslog preserves unlimited message size, multiline boundaries, ordering, or repeated records by default.
  • Changing syslog_split_messages globally without a rollback plan and a client or operational compatibility test.

log_destination · syslog_facility · syslog_ident · syslog_sequence_numbers · logging_collector

References

47 - update_process_title

update_process_title is the PostgreSQL setting that controls whether PostgreSQL updates the process title to show the active SQL command.
Note

Fact — official short description: “Updates the process title to show the active SQL command.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesuperuser
Settable at runtime by a superuser
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueReporting and Logging / Process Title
Upstream classification
Latest boot value , Valueon
on

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

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 on on

How it works

update_process_title updates the process title to show the active SQL command. Enables updating of the process title every time a new SQL command is received by the server. When supported by the operating system, PostgreSQL rewrites each backend’s process title as commands change, making current activity visible to tools such as ps.

update_process_title is a SUPERUSER-context setting. Superuser or a role granted the appropriate SET privilege can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

Process titles complement application_name, cluster_name, pg_stat_activity, and log_line_prefix, allowing operating-system observations to be joined with database activity.

Tuning advice

Tip

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

Workload Guidance
OLTP Keep update_process_title enabled or populated for operator clarity unless profiling proves material overhead. Use stable, non-secret labels that match monitoring inventory.
OLAP Preserve update_process_title so long jobs can be attributed from operating-system and PostgreSQL views; use application_name for finer job identity.
Small nodes Do not tune update_process_title for capacity. Its observability value normally outweighs negligible overhead, but avoid high-cardinality or sensitive labels.

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: 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 update_process_title in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Putting secrets or unbounded high-cardinality data into operator-visible process labels.
  • Using inconsistent cluster, application, and process labels that cannot be joined across monitoring systems.
  • Changing update_process_title globally without a rollback plan and a client or operational compatibility test.

application_name · cluster_name · log_line_prefix · log_timezone · log_hostname

References