track_commit_timestamp
是一个配置参数,用于确定是否应跟踪事务的提交时间。
track_commit_timestamp
在PostgreSQL 9.5中添加。
默认值
track_commit_timestamp
的默认值为:off
。
用法
track_commit_timestamp
主要用于逻辑复制解决方案(如pglogical
),其中提交时间用作冲突解决的一部分。
track_commit_timestamp
的当前值是pg_control
中记录的配置参数之一(PostgreSQL 9.5及更高版本)。
以下系统函数需要启用track_commit_timestamp
才能返回有用的数据
按PostgreSQL版本查看详细信息
track_commit_timestamp (PostgreSQL 17)
设置 |
off |
单位 |
|
类别 |
复制/发送服务器 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 16)
设置 |
off |
单位 |
|
类别 |
复制/发送服务器 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 15)
设置 |
off |
单位 |
|
类别 |
复制/发送服务器 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 14)
设置 |
off |
单位 |
|
类别 |
复制/发送服务器 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 13)
设置 |
off |
单位 |
|
类别 |
复制 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 12)
设置 |
off |
单位 |
|
类别 |
复制 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 11)
设置 |
off |
单位 |
|
类别 |
复制 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 10)
设置 |
off |
单位 |
|
类别 |
复制 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 9.6)
设置 |
off |
单位 |
|
类别 |
复制 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
track_commit_timestamp (PostgreSQL 9.5)
设置 |
off |
单位 |
|
类别 |
复制 |
简短描述 |
收集事务提交时间。 |
额外描述 |
|
上下文 |
postmaster |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: track_commit_timestamp
更改历史记录
示例
postgres=# SHOW track_commit_timestamp ;
track_commit_timestamp
------------------------
on
(1 row)
postgres=# CREATE TABLE xact_test (id INT, val TEXT);
CREATE TABLE
postgres=# BEGIN ;
BEGIN
postgres=*# SELECT pg_current_xact_id();
txid_current
--------------
508
(1 row)
postgres=*# INSERT INTO xact_test VALUES (1, 'foo'),
(2, 'bar'),
(3, 'baz');
INSERT 0 3
postgres=*# SELECT pg_xact_commit_timestamp(xmin), xmin, * FROM xact_test;
pg_xact_commit_timestamp | xmin | id | val
--------------------------+------+----+-----
| 508 | 1 | foo
| 508 | 2 | bar
| 508 | 3 | baz
(3 rows)
postgres=*# COMMIT;
postgres=# SELECT pg_xact_commit_timestamp(xmin), xmin, * FROM xact_test ;
pg_xact_commit_timestamp | xmin | id | val
-------------------------------+------+----+-----
2020-10-25 12:36:47.549053+01 | 508 | 1 | foo
2020-10-25 12:36:47.549053+01 | 508 | 2 | bar
2020-10-25 12:36:47.549053+01 | 508 | 3 | baz
(3 rows)
postgres=# SELECT * FROM pg_last_committed_xact();
xid | timestamp
-----+-------------------------------
508 | 2020-10-25 12:36:47.549053+01
(1 row)
相应的WAL记录(由pg_waldump
输出)
rmgr: Heap len (rec/tot): 63/ 63, tx: 508, lsn: 0/03031490, prev 0/03031458, desc: INSERT off 10 flags 0x00, blkref #0: rel 1663/13580/16456 blk 0
rmgr: Heap len (rec/tot): 63/ 63, tx: 508, lsn: 0/030314D0, prev 0/03031490, desc: INSERT off 11 flags 0x00, blkref #0: rel 1663/13580/16456 blk 0
rmgr: Heap len (rec/tot): 63/ 63, tx: 508, lsn: 0/03031510, prev 0/030314D0, desc: INSERT off 12 flags 0x00, blkref #0: rel 1663/13580/16456 blk 0
rmgr: Transaction len (rec/tot): 34/ 34, tx: 508, lsn: 0/03031588, prev 0/03031550, desc: COMMIT 2020-10-25 12:36:47.549053 MET