{"Entry":{"collection":"guc","key":"wal_log_hints","name":"wal_log_hints","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Write-Ahead Log / Settings","category_zh":"","changed_in":["9.6"],"changes":[{"documentation_changed":false,"fields":{},"from":"9.3","status":"added","to":"9.4"},{"documentation_changed":false,"fields":{"short_desc":{"from":"Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications.","to":"Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification."}},"from":"9.5","status":"changed","to":"9.6"}],"content_hash":"d9dbcd525203604fae401a7e712c0f080910033f144232d97997c2c25d48ccd5","context":"","default_changed_in":[],"default_history":[{"from":"9.4","to":"19","value":"off"}],"editorial":{"advice":{"olap":"Provision WAL, archive bandwidth, and recovery I/O for bulk-load peaks. Coordinate load pacing and checkpoints when reducing spikes; never break the recovery chain for throughput.","oltp":"Establish durability and recovery objectives first, then tune wal_log_hints from WAL rate, flush latency, checkpoints, and peak pg_wal usage. Validate every change with crash/recovery and archive monitoring.","small":"Start from safe defaults and set explicit alerts for limited disk capacity. Do not disable durability or break the recovery chain merely to save modest I/O."},"mechanism":["Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification. The value is fixed when the server starts, so changing it requires a restart.","When data checksums are off, this forces full-page WAL for the first hint-bit change after a checkpoint, giving pg_rewind the block-change safety it needs. With checksums enabled, equivalent hint logging already occurs, so the setting adds no further effect.","Monitor and change wal_log_hints together with wal_compression, full_page_writes, wal_level. Validate on the relevant server role and real workload, then use its postmaster context to choose session change, reload, or restart; a historical boot default is not the current effective value."],"pitfalls":["Assuming it logs every hint update rather than the first page image after a checkpoint.","Turning it on but not completing the restart before relying on pg_rewind.","Forgetting that checksums already force the relevant hint WAL behavior.","Confusing pg_settings base units with human-readable configuration units.","Benchmarking throughput without a crash-recovery and archive-restore test."],"references":[{"title":"PostgreSQL 19 Beta 4: wal_log_hints","url":"https://www.postgresql.org/docs/19/runtime-config-wal.html#GUC-WAL-LOG-HINTS"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["wal_compression","full_page_writes","wal_level","wal_buffers","max_wal_senders","max_replication_slots"],"summary":"wal_log_hints — Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification. Observed in PG9.4–19 Beta 4; its last measured boot default is off in PG19 Beta 4, with postmaster context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"9.4","group":"Write-Ahead Log","group_slug":"wal","imported_at":"2026-09-27T17:57:32.345878+08:00","intro_commit":{"authored_at":"2013-12-21T03:33:16+09:00","discussion":[],"hash":"961bf59fb7a7e4fab751e20e9372de7ab37c5649","subject":"Rename wal_log_hintbits to wal_log_hints, per discussion on pgsql-hackers.","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=961bf59fb7a7e4fab751e20e9372de7ab37c5649"},"key":"wal_log_hints","last_version":"20","max_val":"","min_val":"","name":"wal_log_hints","position":472,"present_in":["9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"short_desc":"When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint, even for non-critical modifications of so-called hint bits.","short_desc_zh":"","source_rev":"english-manuals:1dcab3e97efdca8384f2918cb1942e119ca7c0c6ce6eadad592c448ca118d546","unit":"","vartype":"bool"}},"Definition":{"Collection":"guc","Key":"wal_log_hints","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"wal_log_hints","SourceRevision":"english-manuals:1dcab3e97efdca8384f2918cb1942e119ca7c0c6ce6eadad592c448ca118d546","Facts":{"boot_val":"off","category":"Write-Ahead Log / Settings","context":"postmaster","description":"When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint, even for non-critical modifications of so-called hint bits. If data checksums are enabled, hint bit updates are always WAL-logged and this setting is ignored. You can use this setting to test how much extra WAL-logging would occur if your database had data checksums enabled. This parameter can only be set at server start. The default value is off.","doc":{"anchor":"GUC-WAL-LOG-HINTS","file":"runtime-config-wal.html","lang":"en","sha256":"d2646404a06e8f7ac655204b4f28c049ae8f3fd4f2272db080fcefa2c4af0763","slug":"18"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":null,"metadata_version":"18","min_val":null,"name":"wal_log_hints","short_desc":"Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification.","source":"pg-settings-source-snapshot","unit":null,"vartype":"bool"},"ManualEvidence":{"doc":{"anchor":"GUC-WAL-LOG-HINTS","file":"runtime-config-wal.html","lang":"en","sha256":"d2646404a06e8f7ac655204b4f28c049ae8f3fd4f2272db080fcefa2c4af0763","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"wal_log_hints","SourceDatabase":"center","Version":"18","Locale":"en","Title":"wal_log_hints","Summary":"When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint, even for non-critical modifications of so-called hint bits. If data checksums are enabled, hint bit updates are always WAL-logged and this setting is ignored. You can use this setting to test how much extra WAL-logging would occur if your database had data checksums enabled. This parameter can only be set at server start. The default value is off.","BodyHTML":"\u003cp\u003eWhen this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint, even for non-critical modifications of so-called hint bits. If data checksums are enabled, hint bit updates are always WAL-logged and this setting is ignored. You can use this setting to test how much extra WAL-logging would occur if your database had data checksums enabled. This parameter can only be set at server start. The default value is off.\u003c/p\u003e","SourceRevision":"english-manuals:1dcab3e97efdca8384f2918cb1942e119ca7c0c6ce6eadad592c448ca118d546","ContentHash":"675265e31986cf3ca6177b70684ebf86cecf0038c9fcf8193c86ae60b84657a1","Payload":{"description":"When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint, even for non-critical modifications of so-called hint bits. If data checksums are enabled, hint bit updates are always WAL-logged and this setting is ignored. You can use this setting to test how much extra WAL-logging would occur if your database had data checksums enabled. This parameter can only be set at server start. The default value is off."}},"RequestedLocale":"zh-Hans","Fallback":true,"Versions":["10","11","12","13","14","15","16","17","18","19","20","9.4","9.5","9.6"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
