Как найти время создания таблицы в Postgresql.PostgreSQL: Время создания таблицы
Пример,
Если я создал файл, который я могу найти время создания файла, как я хочу, чтобы узнать время создания таблицы.
Как найти время создания таблицы в Postgresql.PostgreSQL: Время создания таблицы
Пример,
Если я создал файл, который я могу найти время создания файла, как я хочу, чтобы узнать время создания таблицы.
Я просмотрел таблицы pg_ *, и я не мог найти там времени создания. Можно найти файлы таблиц, но тогда в Linux вы не сможете получить время создания файла. Так что я думаю, что ответ в том, что вы можете только найти эту информацию на Windows, используя следующие шаги:
select datname, datdba from pg_database;
select relname, relfilenode from pg_class;
<PostgreSQL folder>/main/base/<database id>/<table filenode id>
(не уверен, что это на Windows).Я не думаю, что это возможно изнутри PostgreSQL, но вы, вероятно, найдете его в времени создания основного файла таблицы.
Вы не можете - информация не записывается нигде. Просмотр файлов таблицы не обязательно даст вам правильную информацию - есть операции с таблицами, которые создадут для вас новый файл, и в этом случае дата будет сброшена.
Вы можете получить это из 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)
ОШИБКА: «pg_stat_last_operation не существует», я использую pg9.2.4. –
pg_stat_last_operation - Greenplum. –
Таблица 'pg_stat_all_tables' также может помочь. –
--query
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)
SELECT oid FROM pg_database WHERE datname = 'mydb';
Тогда (при условии oid
12345):
ls -l $PGDATA/base/12345/PG_VERSION
Этот способ предполагает, что PG_VERSION
является наименее вероятно, будет изменен после создания.
NB: Если PGDATA
не определен, проверьте Where does PostgreSQL store the database?
Есть некоторые операции на столе, такие как кластер, который будет генерировать новый файл, а не повторно использовать старый. Так что это не надежный метод. –
@Alex Korban: Полностью автоматизировать это здесь: http://stackoverflow.com/questions/18849756/automatically-drop-tables-and-indexes-older-than-90-days/18852752#18852752 –
@Quandary: Интересно, спасибо , Похоже, до сих пор не существует пуленепробиваемого метода, кроме как хранить время создания самостоятельно. –