Я отвечаю за большую базу данных PostgreSQL с несколькими десятками таблиц. Я подозреваю, что многие из этих таблиц никогда не доступны.
Какой лучший способ проверить, когда в последний раз был доступ к определенной таблице? Я думал добавить триггер DELETE
, INSERT
и UPDATE
, но я надеюсь, что есть более эффективный способ.
postgresql
Адам Матан
источник
источник
select
. Вы думали о регистрации ?Ответы:
pg_catalog.pg_statio_all_tables ваш друг. Все, что вам нужно сделать, это периодически опрашивать pg_statio_all_tables для рассматриваемых таблиц. Изменение статистики ~ активная таблица, неизменная статистика ~ потенциально неиспользуемая таблица. Просто будьте осторожны, чтобы никто не делал
select pg_stat_reset () ;
в середине вашего мониторинга.Например:
Вставки:
Выбор:
Удаления:
обновление-- 2011-09-01
Дальнейшее тестирование показывает, что, как
vacuum
представляется, несколько увеличивает значения в pg_statio_all_tables, что нежелательно для желаемого использования. Хотяvacuum
pg_statio_all_tables не делает бесполезным использование, интерпретация результатов делает его более размытым.Возможно, лучшее место для мониторинга - pg_catalog.pg_stat_all_tables (по крайней мере, в более новых версиях Pg). Я смотрю на версию 8.4, и в ней есть счетчики для вставленных, прочитанных, обновленных и удаленных кортежей - в ISTR 8.2 нет всего этого, и я не знаю о 8.3, поэтому YMMV зависит от версии Pg, которой вы являетесь с помощью.
Третий вариант (для операций вставки, обновления и удаления) заключается в просмотре временных меток файлов в каталоге $ PGDATA / base / $ datid. Имя файла должно соответствовать oid таблицы, так что вы можете использовать это для идентификации таблиц, которые не получают вставки, обновления или удаления. К сожалению, это не относится к таблицам, из которых все еще выбираются, и использование табличных пространств вызовет дополнительные сложности (так как эти файлы не будут в $ PGDATA / base / $ datid). Временные метки не будут обновляться до тех пор, пока не будут сброшены все ожидающие изменения, но если файл не изменился за месяцы, шансы ожидающих изменений в данный момент, вероятно, невелики.
источник
Вы можете получить некоторую информацию о последнем изменении таблицы
xmin
, например:Но, вы должны быть осведомлены о по модулю и опоясывающего и замороженных xids . Нет никакого способа преобразовать это в «время», но если вы сейчас захватываете значение для своих таблиц, а затем сравниваете позднее, вы можете получить список таблиц, которые изменились
источник