Определение наиболее важных таблиц для анализа

Основываясь на этом ( /questions/26781139/postgresql-avtomatizatsiya-vacuum-full-dlya-razdutyih-tablits/26781152#26781152) ответе на вопрос об автоматизированном VACUUM FULL раздутых таблиц, администратор баз данных (который здесь больше не работает) разработал сценарий для определения таблиц, которые нужно анализировать.,

Примечание: это v8.4 (да, я знаю, что он древний, но я ничего не могу с этим поделать) и имеет минимальное время обслуживания, поэтому VACUUM FULL кажется не решение проблемы.

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

Спасибо

1 ответ

Решение

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

ANALYZE имеет дело с оценкой количества записей, которые различные операторы SQL получат из данной таблицы, и того, сколько места эти записи займут в ОЗУ. Затем эта информация используется для сравнения стоимости (во времени и в памяти) между различными планами запросов, которые решают один и тот же логический запрос.

Тот факт, что в таблице есть кортежи мусора, не влияет на количество кортежей, возвращаемых запросом, и не влияет на размер используемых кортежей. Следовательно, повторный анализ таблиц, поскольку они заполнены мусором, не имеет смысла.

Подробности на ANALYZE отсюда: https://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT

Другие вопросы по тегам