PostgreSQL: время создания таблицы

Как найти время создания таблицы в Postgresql.

Пример,

Если я создал файл, я могу найти время создания файла таким образом, чтобы узнать время создания таблицы.

Ответ 1

Я просмотрел таблицы pg_ *, и я не мог найти там времени создания. Возможно найти файлы таблиц, но тогда в Linux вы не сможете получить время создания файла. Поэтому я думаю, что ответ заключается в том, что вы можете найти эту информацию только в Windows, выполнив следующие шаги:

  • получить идентификатор базы данных с помощью select datname, datdba from pg_database;
  • получить идентификатор filenode таблицы с помощью select relname, relfilenode from pg_class;
  • найдите файл таблицы и найдите время его создания; Я думаю, что местоположение должно быть чем-то вроде <PostgreSQL folder>/main/base/<database id>/<table filenode id> (не уверен, что это такое в Windows).

Ответ 2

Вы не можете - информация не записывается нигде. Просмотр файлов таблицы не обязательно даст вам правильную информацию - есть операции с таблицами, которые создадут для вас новый файл, и в этом случае дата будет reset.

Ответ 3

Я не думаю, что это возможно изнутри PostgreSQL, но вы, вероятно, найдете его в течение времени создания основного файла таблицы.

Ответ 4

Предлагаемый здесь:

SELECT oid FROM pg_database WHERE datname = 'mydb';

Тогда (если oid равно 12345):

ls -l $PGDATA/base/12345/PG_VERSION

Это обходное решение предполагает, что PG_VERSION является наименее вероятным изменением после создания.

NB: Если PGDATA не определен, проверьте Где хранит базу данных PostgreSQL?

Ответ 5

Вы можете получить это из pg_stat_last_operation. Вот как это сделать:

select * from pg_stat_last_operation where objid = 'table_name'::regclass order by statime;

В этой таблице хранятся следующие операции:

select distinct staactionname from pg_stat_last_operation;

 staactionname 
---------------
 ALTER

 ANALYZE

 CREATE

 PARTITION

 PRIVILEGE

 VACUUM
(6 rows)

Ответ 6

- запрос

select pslo.stasubtype, pc.relname, pslo.statime
from pg_stat_last_operation pslo
join pg_class pc on(pc.relfilenode = pslo.objid)
and pslo.staactionname = 'CREATE'
Order By pslo.statime desc 

поможет достичь желаемых результатов

(попробовал это на greenplum)