Дополнение к анализу планов и уточнение гипотезы
ℹ️С учётом новой информации о параметре write_page_cost (стоимость сброса страниц временных таблиц на диск, по умолчанию 5.0, действует только при включённом enable_parallel_temptables) проведена коррекция предыдущего анализа.
Статус write_page_cost в отчётном периоде 2
- Параметр enable_parallel_temptables в Период 2 (отчет-93-94) имел значение off (table.result.txt).
- Следовательно, write_page_cost не был активен и не мог влиять на стоимостную модель планировщика.
- Подтверждено – параметр не является фактором, вызвавшим изменения планов.
Таким образом, из перечня изменившихся параметров (анализ analyze-2.txt) прямое негативное влияние на выбор планов мог оказать только online_analyze.enable = off при катастрофическом числе сбросов статистики (Cache resets = 79). Дополнительная нагрузка от auto_explain остаётся сопутствующим фактором, не объясняющим рост физических чтений.
Скорректированная гипотеза (Уровень‑2: Вероятно, но требует проверки)
Единственной конфигурационной причиной локальной деградации планов (переход на Seq Scan для запроса к _InfoRg12488, что согласуется с общим ростом shared_blks_read и падением hit ratio) является работа планировщика на устаревшей или отсутствующей статистике из-за отключения online_analyze.enable и многократных принудительных сбросов накопленной статистики. Параметр write_page_cost не действовал, так как enable_parallel_temptables был выключен. auto_explain увеличивает Total time, но не провоцирует избирательный рост чтений.
Обновлённая последовательность рассуждений и тезисов
1. Нагрузка по числу запросов стабильна (отклонение <1%).
Подтверждено.
2. Основные параметры кэша и стоимости (shared_buffers, random_page_cost и др.) не изменялись.
Подтверждено.
3. Зафиксирован резкий рост физических чтений и падение query‑level hit ratio.
Подтверждено.
4. Анализ планов показал появление Seq Scan в Период 2 для запроса к _InfoRg12488.
Подтверждено.
5. Группа запросов к _InfoRg12756 сохранила прежние эффективные планы, деградация не повсеместна.
Подтверждено.
6. Изменившиеся параметры, способные влиять на планировщик: online_analyze.enable и write_page_cost.
· write_page_cost неактивен, так как enable_parallel_temptables = off.
Подтверждено (на основании документации и данных конфигурации).
· online_analyze.enable = off при Cache resets = 79 создаёт условия для использования устаревших гистограмм.
Вероятно.
7. auto_explain с полным протоколированием всех запросов создаёт паразитную нагрузку, но не объясняет специфического роста чтений.
Вероятно.
Дополненные способы подтверждения/опровержения
➡️Идентификация запросов-лидеров по shared_blks_read в каждом периоде (например, через pg_stat_statements или логи auto_explain) для точного сопоставления их планов. Если 12e2db113ff929b0 входит в топ, связь деградации с его планом будет прямой.
- Неизвестно – данные не предоставлены.
➡️Анализ распределения значений параметров, при которых для _InfoRg12488 выбирается Seq Scan. Если такие значения типичны для нагрузки, устаревание статистики становится бесспорной причиной.
- Неизвестно – требуются логи с параметрами.
➡️Проверка актуальности статистики pg_stat_user_tables для _InfoRg12488 (поля last_analyze, n_mod_since_analyze).
- Неизвестно – данные отсутствуют.
☑️Контролируемый эксперимент: включить online_analyze = on при прочих настройках Периода 2. Снижение физических чтений и исчезновение Seq Scan подтвердят гипотезу.
- Неизвестно – требуется тестовая среда.
☑️Оценка вклада auto_explain: временно отключить или изменить log_min_duration на порог >1000 мс, замерить Total time и I/O time. Это позволит количественно отделить эффект логирования от эффекта смены планов.
- Неизвестно – требуется эксперимент.
☑️Анализ wait events: доминирование DataFileRead при высокой утилизации диска укажет на чтения как на главный узкий место.
- Неизвестно – данные не предоставлены.
Вывод
ℹ️Гипотеза о деградации планов из-за отключения online_analyze и сбросов статистики остаётся основной.
Фактор write_page_cost исключён как неактивный.
ℹ️Для окончательного заключения необходимы данные о top-запросах по чтению, состоянии статистики таблиц и wait events.