Добавить в корзинуПозвонить
Найти в Дзене
Postgres DBA

Дополнительная информация по write_page_cost

ℹ️С учётом новой информации о параметре write_page_cost (стоимость сброса страниц временных таблиц на диск, по умолчанию 5.0, действует только при включённом enable_parallel_temptables) проведена коррекция предыдущего анализа.
Таким образом, из перечня изменившихся параметров (анализ analyze-2.txt) прямое негативное влияние на выбор планов мог оказать только online_analyze.enable = off при
Оглавление

Дополнение к анализу планов и уточнение гипотезы

ℹ️С учётом новой информации о параметре 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.