Ответ 1
Postgres 9,5 или позже
Вы можете включить track_commit_timestamp
в postgresql.conf
(и перезапустить), чтобы начать отслеживать временные метки фиксации. Затем вы можете получить метку времени для вашего xmin
. Связанный ответ:
Postgres 9.4 или старше
В PostgreSQL нет таких метаданных, если вы сами не записали их.
Вы можете получить некоторую информацию из заголовков строк (HeapTupleHeaderData), в частности из идентификатора транзакции вставки xmin
. Он содержит идентификатор транзакции, в которую была вставлена строка (необходим для определения видимости в модели PostgreSQL MVCC). Попробуйте (для любой таблицы):
SELECT xmin, * FROM tbl LIMIT 10;
Некоторые ограничения применяются:
- Если база данных была выгружена и восстановлена, то, очевидно, информация исчезла - все строки вставляются в одну транзакцию.
- Если база данных огромна/очень старая/очень сильно написана, то, возможно, она прошла через обход идентификатора транзакции, и порядок чисел в
xmin
неоднозначен.
Но для большинства баз данных вы должны иметь возможность получить:
- хронологический порядок ВСТАВКИ
- какие строки были вставлены вместе
- когда между вставками (вероятно) был длительный промежуток времени
Впрочем, времени нет.