{"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"}],"derived_content_hash":"05a5fe55ec87cd7a92c1ef5a405f726e76eb4d605fcb58e07a11005ae11eafab","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"],"repair_provenance":{"original_source_revision":"english-manuals:1dcab3e97efdca8384f2918cb1942e119ca7c0c6ce6eadad592c448ca118d546","receipt_sha256":"9ae06f3a398eda3df6565dcab68da8abc0e5704c805aee99df8572e8b56d48f5","repair":"wiki-repair-20261023"},"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":"wiki-repair-20261023:c7d84bf59d07713e52078154c666dea36a6078c7bc78d15f9e612af083de5d82","unit":"","vartype":"bool"}},"Definition":{"Collection":"guc","Key":"wal_log_hints","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"wal_log_hints","SourceRevision":"wiki-repair-20261023:c7d84bf59d07713e52078154c666dea36a6078c7bc78d15f9e612af083de5d82","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.","description_zh":"当这个参数为 on 时，PostgreSQL 服务器在检查点之后首次修改页面时把该磁盘页面的整个内容都写入 WAL，即使对所谓的提示位做非关键修改也会这样做。 如果启用了数据校验和，提示位更新总是会被 WAL 记录并且这个设置会被忽略。你可以用这个设置来测试：如果数据库启用数据校验和，会产生多少额外的 WAL 记录。 这个参数只能在服务器启动时设置。默认值是 off。","description_zh_html":"\u003cp\u003e\n        当这个参数为 \u003ccode class=\"literal\"\u003eon\u003c/code\u003e 时，\u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e 服务器在检查点之后首次修改页面时把该磁盘页面的整个内容都写入 WAL，即使对所谓的提示位做非关键修改也会这样做。\n       \u003c/p\u003e\u003cp\u003e\n        如果启用了数据校验和，提示位更新总是会被 WAL 记录并且这个设置会被忽略。你可以用这个设置来测试：如果数据库启用数据校验和，会产生多少额外的 WAL 记录。\n       \u003c/p\u003e\u003cp\u003e\n        这个参数只能在服务器启动时设置。默认值是 \u003ccode class=\"literal\"\u003eoff\u003c/code\u003e。\n       \u003c/p\u003e","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","translation_provenance":{"inputs":[{"kind":"current-pgdoc-translation","path":"/Users/vonng/pgsty/pgdoc/zh/18/html/runtime-config-wal.html","sha256":"94cdacb1171b4c528492ca0aec6aafa48a2c758276225fe0dbfe5b12452d4930"}],"kind":"same-version-pgdoc","locale":"zh-Hans","source_revision":"b1b500221dbe5437cfca004d6b04d3f6e422765d","version":"18"},"unit":null,"vartype":"bool","zh_from":"same-version-pgdoc"},"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":"wiki-repair-20261023:c7d84bf59d07713e52078154c666dea36a6078c7bc78d15f9e612af083de5d82","ContentHash":"b91ae54b25d871d3e028165b98afaceb3ee9090630a1aeee9b54e0169b76532c","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":"en","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
