Postgres 9.5 この問題に関連する新機能が導入されました:タイムスタンプのコミット 。
track_commit_timestamp
postgresql.conf
内 (そして再起動してください!)コミットタイムスタンプの追跡を開始します。次に、クエリを実行できます:
SELECT * FROM tbl
WHERE pg_xact_commit_timestamp(xmin) >= '2015-11-26 18:00:00+01';
"タイムスタンプ追跡のコミット"
の章をお読みください PostgresWikiで。
関連する
関数のボラティリティはVOLATILE
のみです トランザクションID( xid
)定義ごとにラップアラウンドできます。したがって、機能インデックスを作成することはできません
IMMUTABLE
を偽造する可能性があります 限られた時間枠でのアプリケーションの関数ラッパーの変動性。ただし、影響に注意する必要があります。詳細な説明付きの関連ケース:
コミットのシーケンスのみに関心がある(絶対時間ではない)多くのユースケース(あなたのような?)では、 xmin
を使用する方が効率的かもしれません。 bigint
にキャストします 「直接」( xmin ::text ::bigint
)タイムスタンプをコミットする代わりに。 ( xid
内部的には符号なし整数であり、上半分は符号付き integer
に適合しません。 。)繰り返しになりますが、xidラップアラウンドの可能性による制限に注意してください。
同じ理由で、コミットのタイムスタンプは無期限に保存されません 。中小規模のデータベースの場合、 xid
ラップアラウンドはほとんど発生しませんが、クラスターが十分に長く稼働している場合は、最終的には発生します。 "トランザクションIDラップアラウンドエラーの防止"<の章をお読みください。 / a> 詳細については、マニュアルを参照してください。