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

На основании этого (https://stackoverflow.com/a/13954487/1543618) ответ на вопрос об автоматическом VACUUM FULL раздутых таблиц, администратор баз данных (который здесь больше не работает) разработал скрипт для определения, какие таблицы нужно АНАЛИЗИРОВАТЬ.

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

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

Спасибо


person RonJohn    schedule 07.11.2017    source источник


Ответы (1)


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

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

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

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

person Jacob Davis-Hansson    schedule 21.11.2017