{"Entry":{"collection":"guc","key":"track_commit_timestamp","name":"track_commit_timestamp","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Replication / Sending Servers","category_zh":"","changed_in":["14"],"changes":[{"documentation_changed":false,"fields":{},"from":"9.4","status":"added","to":"9.5"},{"documentation_changed":true,"fields":{},"from":"12","status":"changed","to":"13"},{"documentation_changed":false,"fields":{"category":{"from":"Replication","to":"Replication / Sending Servers"}},"from":"13","status":"changed","to":"14"}],"content_hash":"83b3f63612bb70847f26b78aa3d1d2cf38d8e9faf168e1b8dc877666c9b207e2","context":"","default_changed_in":[],"default_history":[{"from":"9.5","to":"19","value":"off"}],"derived_content_hash":"2698a6ab02181d73a2b6cde9796a733fc0e3385b56c0b63e70b3c98f2656ce05","documentation_refresh":{"batch":"20261113","original_source_rev":"wiki-repair-20261023:9ee4c7c8ddd4416fbc7d856d2f3b623bceb4499b0e7a52801a6a154f4cf709ab","versions":{"14":"14.25","15":"15.20","16":"16.16","17":"17.12","18":"18.7","19":"19rc2"}},"editorial":{"advice":{"olap":"Read standbys and logical subscribers often see long queries or large transactions. Put explicit bounds on replay/apply and monitor lag, worker saturation, slot restart_lsn, and conflict cancellations.","oltp":"Size track_commit_timestamp from topology, failover roles, slot/subscription count, and reconnect headroom. Test worst-case primary latency, standby replay, and disk retention before production.","small":"Configure only replication capacity that is actually used. Even a small topology needs bounded timeouts and slot lifecycle; unlimited retention is not reliability."},"mechanism":["Collects transaction commit time. The value is fixed when the server starts, so changing it requires a restart.","PostgreSQL stores transaction commit timestamps in an auxiliary SLRU so SQL and replication-origin features can query them later. It must be enabled at startup before the history is collected and adds storage/I/O overhead; it cannot reconstruct older timestamps.","Monitor and change track_commit_timestamp together with max_active_replication_origins, max_logical_replication_workers, max_replication_slots. 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":["Changing it on the wrong primary, standby, sender, or subscriber role.","Watching only configured bytes/time instead of actual lag, slot position, and worker state.","Failing over to a node that lacks the old primary's capacity or prerequisites.","Using infinite waits or WAL retention to hide a failed consumer."],"references":[{"title":"PostgreSQL 19 Beta 4: track_commit_timestamp","url":"https://www.postgresql.org/docs/19/runtime-config-replication.html#GUC-TRACK-COMMIT-TIMESTAMP"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["max_active_replication_origins","max_logical_replication_workers","max_replication_slots","idle_replication_slot_timeout","max_slot_wal_keep_size","max_wal_senders"],"summary":"track_commit_timestamp — Collects transaction commit time. Observed in PG9.5–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.5","group":"Replication","group_slug":"replication","imported_at":"2026-09-27T17:57:32.209127+08:00","intro_commit":{"authored_at":"2014-12-03T11:53:02-03:00","discussion":[],"hash":"73c986adde5d73a5e2555da9b5c8facedb146dcd","subject":"Keep track of transaction commit timestamps","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=73c986adde5d73a5e2555da9b5c8facedb146dcd"},"key":"track_commit_timestamp","last_version":"20","max_val":"","min_val":"","name":"track_commit_timestamp","position":427,"present_in":["9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"repair_provenance":{"original_source_revision":"english-manuals:3a9f47d5d170c996f55622b7c2ddc11c7cf79489dcb94645c9e5cd4c9183cd3e","receipt_sha256":"84403ad80960c670a9589fb565cb6d2ce5fd55d49308875f8eff364bf7d0417a","repair":"wiki-repair-20261023"},"short_desc":"Record commit time of transactions.","short_desc_zh":"","source_rev":"wiki-repair-20261023:9ee4c7c8ddd4416fbc7d856d2f3b623bceb4499b0e7a52801a6a154f4cf709ab","unit":"","vartype":"bool"}},"Definition":{"Collection":"guc","Key":"track_commit_timestamp","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"track_commit_timestamp","SourceRevision":"wiki-repair-20261023:9ee4c7c8ddd4416fbc7d856d2f3b623bceb4499b0e7a52801a6a154f4cf709ab","Facts":{"boot_val":"off","category":"Replication / Sending Servers","context":"postmaster","description":"Record commit time of transactions. This parameter can only be set at server start. The default value is off.","description_zh":"记录事务的提交时间。该参数只能在服务器启动时设置。默认值是 off。","description_zh_html":"\u003cp\u003e\n        记录事务的提交时间。该参数只能在服务器启动时设置。默认值是 \u003ccode class=\"literal\"\u003eoff\u003c/code\u003e。\n       \u003c/p\u003e","doc":{"anchor":"GUC-TRACK-COMMIT-TIMESTAMP","file":"runtime-config-replication.html","lang":"en","sha256":"c0b8bd86131ec62d4df97ce480d004aa7e3544477d053f0c2d4047b9edad5cc0","slug":"18"},"doc_html":"\u003cp\u003e\n        Record commit time of transactions.\n        This parameter can only be set at server start.\n        The default value is \u003ccode class=\"literal\"\u003eoff\u003c/code\u003e.\n       \u003c/p\u003e","doc_same_as":"","documentation_revision":{"inputs":[{"file":"runtime-config-replication.html","kind":"same-version-reviewed-manual","locale":"en","sha256":"c0b8bd86131ec62d4df97ce480d004aa7e3544477d053f0c2d4047b9edad5cc0","version":"18.7"},{"file":"runtime-config-replication.html","kind":"same-version-reviewed-manual","locale":"zh-Hans","sha256":"83907b5f469e979a7b9ec875b5e7bdaa2ef6b85596ca31b45174f68cd7398b18","version":"18.7"}],"release":"18.7","runtime_remeasured":false,"source_revision":"pgdoc:b9f0e7232f60f380d642ac9b99226606c254b552"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":null,"metadata_version":"18","min_val":null,"name":"track_commit_timestamp","short_desc":"Collects transaction commit time.","source":"pg-settings-source-snapshot","translation_provenance":{"inputs":[{"kind":"current-pgdoc-translation","path":"/Users/vonng/pgsty/pgdoc/zh/18/html/runtime-config-replication.html","sha256":"52bd5892f7e5511d05f46fc0c13a017de85307c674a9014948eb4ad480326c15"}],"kind":"same-version-pgdoc","locale":"zh-Hans","source_revision":"b1b500221dbe5437cfca004d6b04d3f6e422765d","version":"18"},"unit":null,"vartype":"bool","zh_from":"same-version-manual"},"ManualEvidence":{"doc":{"anchor":"GUC-TRACK-COMMIT-TIMESTAMP","file":"runtime-config-replication.html","lang":"en","sha256":"c0b8bd86131ec62d4df97ce480d004aa7e3544477d053f0c2d4047b9edad5cc0","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"track_commit_timestamp","SourceDatabase":"center","Version":"18","Locale":"en","Title":"track_commit_timestamp","Summary":"Record commit time of transactions. This parameter can only be set at server start. The default value is off.","BodyHTML":"\u003cp\u003e\n        Record commit time of transactions.\n        This parameter can only be set at server start.\n        The default value is \u003ccode\u003eoff\u003c/code\u003e.\n       \u003c/p\u003e","SourceRevision":"wiki-repair-20261023:9ee4c7c8ddd4416fbc7d856d2f3b623bceb4499b0e7a52801a6a154f4cf709ab","ContentHash":"41fa634b9ef923f7b6f6c7e69fc85b4c514c6e4a27f3a7120aa20dfb770aebf7","Payload":{"description":"Record commit time of transactions. 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.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
