Почему не запускался автоанализ при выполнении автовакуумирования - PullRequest
0 голосов
/ 16 июня 2020

Team, недавно определено, что одна из таблиц автовакуумирования была в актуальном состоянии, но автоанализ не актуален. Параметры настроены по умолчанию. Как это будет происходить? Если параметры автовакуума удовлетворяли условиям, то он должен был также выполнить автоматический анализ.

Пожалуйста, поделитесь некоторыми мыслями по этому поводу.

Спасибо enter image description here

1 Ответ

2 голосов
/ 16 июня 2020

Автоочистка и автоанализ запускаются при разных условиях и используют разные счетчики статистики:

  • автоочистка запускается, если количество мертвых кортежей (n_dead_tup в pg_stat_all_tables) превышает пороговое значение (по умолчанию около 20% от reltuples от pg_class). Начиная с v13, существует аналогичное условие с n_ins_since_vacuum, количеством кортежей, вставленных с момента последнего VACUUM.

  • запускается автоанализ, если количество измененных кортежей (n_mod_since_analyze в pg_stat_all_tables) превышает пороговое значение (по умолчанию около 10% от reltuples из pg_class).

Каждый раз, когда автоочистка или автоанализ завершены, соответствующий счетчик статистики сбросить на 0.

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

...