Как узнать, когда данные были вставлены в Postgres? - PullRequest
11 голосов
/ 28 февраля 2012

Я унаследовал существующую базу данных Postgres, полную данных.Большая часть данных имеет значение столбца create_date.Некоторые из более ранних данных были вставлены до того, как они были отслежены.

Есть ли где-нибудь скрытая таблица метаданных Postgres, которая отслеживает, когда INSERT запросы были выполнены?

Ответы [ 3 ]

16 голосов
/ 29 февраля 2012

Postgres 9,5 или новее

Вы можете включить track_commit_timestamp в postgresql.conf (и перезапустить), чтобы начать отслеживать отметки времени фиксации.Затем вы можете получить метку времени для вашего xmin.Связанный ответ:

Postgres 9,4 или старше

Таких метаданных нетPostgreSQL, если вы не записали его самостоятельно.

Вы можете получить некоторую информацию из заголовков строк (HeapTupleHeaderData) , в частности из идентификатора транзакции вставки xmin.Он содержит идентификатор транзакции, в которую была вставлена ​​строка (необходим для определения видимости в модели MVCC PostgreSQL).Попробуйте (для любой таблицы):

SELECT xmin, * FROM tbl LIMIT 10;

Существуют некоторые ограничения:

  • Если база данных была выгружена и восстановлена, то, очевидно, информация исчезла - все строки вставляются вта же транзакция.
  • Если база данных огромна / очень старая / очень сильно написана, то, возможно, она прошла через перенос идентификатора транзакции , а порядок чисел в xmin неоднозначен.

Но для большинства баз данных вы должны получить:

  • хронологический порядок вставок
  • , какие строки были вставлены вместе
  • когда (возможно) был большой промежуток времени между вставками

Хотя отметки времени нет.

1 голос
/ 16 апреля 2018

track_commit_timestamp (логическое значение)

В основном используется во время настройки сервера репликации. Запись времени фиксации транзакций. Этот параметр можно установить только в файле postgresql.conf или в командной строке сервера. Значением по умолчанию является off .

0 голосов
/ 29 февраля 2012

Краткий ответ: нет.

Если бы это было так, все жаловались бы, что это пустая трата места на всех столах, которые они не хотели отслеживать.

...