Определение наиболее важных таблиц для анализа
Основываясь на этом ( /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