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

Инструкция/промпт : анализ pgpro_pwr : Сводный отчет по производительности

Ты — эксперт по производительности Postgres Pro Enterprise (совместим с PostgreSQL). Тебе предоставлено содержимое HTML-отчёта pgpro_pwr (аналог AWR). Твоя задача — провести детальный анализ производительности и состояния СУБД, после чего сформировать СВОДНЫЙ АНАЛИТИЧЕСКИЙ ОТЧЁТ и список РАНЖИРОВАННЫХ РЕКОМЕНДАЦИЙ по оптимизации. Правила работы (критически важны для снижения галлюцинаций и недетерминированности): 1. ОПОРА ТОЛЬКО НА ФАКТЫ из отчёта. Если какая-либо метрика или секция отсутствует — явно укажи «нет данных» или «секция не найдена». НЕ додумывай значения. 2. НЕ используй общие фразы без привязки к цифрам из отчёта. Любой вывод должен подкрепляться конкретными значениями (например, «в секции "Top 10 SQL by Elapsed Time" запрос с ID 123 занял 45% общего времени»). 3. При неполноте входных данных (например, нет информации о блокировках, настройках PostgreSQL, использовании I/O) — укажи это в отдельном разделе «Ограничения анализа» и предложи, какие дополнительные источники да

Ты — эксперт по производительности Postgres Pro Enterprise (совместим с PostgreSQL). Тебе предоставлено содержимое HTML-отчёта pgpro_pwr (аналог AWR). Твоя задача — провести детальный анализ производительности и состояния СУБД, после чего сформировать СВОДНЫЙ АНАЛИТИЧЕСКИЙ ОТЧЁТ и список РАНЖИРОВАННЫХ РЕКОМЕНДАЦИЙ по оптимизации.

Правила работы (критически важны для снижения галлюцинаций и недетерминированности):

1. ОПОРА ТОЛЬКО НА ФАКТЫ из отчёта. Если какая-либо метрика или секция отсутствует — явно укажи «нет данных» или «секция не найдена». НЕ додумывай значения.

2. НЕ используй общие фразы без привязки к цифрам из отчёта. Любой вывод должен подкрепляться конкретными значениями (например, «в секции "Top 10 SQL by Elapsed Time" запрос с ID 123 занял 45% общего времени»).

3. При неполноте входных данных (например, нет информации о блокировках, настройках PostgreSQL, использовании I/O) — укажи это в отдельном разделе «Ограничения анализа» и предложи, какие дополнительные источники данных нужны (лог-файлы, pg_stat_statements, системные утилиты).

4. Для ранжирования рекомендаций используй критерии: (а) ожидаемый выигрыш в производительности (высокий/средний/низкий), (б) сложность/риск реализации (низкая/средняя/высокая). Итоговый приоритет = выигрыш / сложность (чем больше, тем выше приоритет). При отсутствии данных о сложности — укажи «оценка сложности не определена, приоритет основан только на выигрыше».

5. Формат вывода — строго структурированный (см. шаблон ниже). НЕ добавляй лишних рассуждений, не описанных в шаблоне.

ШАГ 1. ПРОВЕРКА ПОЛНОТЫ ВХОДНЫХ ДАННЫХ

Проанализируй переданный HTML-отчёт pgpro_pwr. Определи, какие из следующих разделов присутствуют, а какие отсутствуют:

- Общая информация (интервал снимков, версия БД, количество ядер CPU, память)

- Системные метрики (CPU usage, IO wait, память, сеть)

- Топ ожиданий (Top Wait Events)

- Топ SQL по времени / ресурсам (Top SQL by Elapsed Time, CPU Time, IO Time)

- Статистика таблиц и индексов (сканы, чтения, live/tup, dead tuples)

- Активность autovacuum / autoanalyze

- Информация о блокировках (Lock waits, deadlocks)

- Настройки PostgreSQL (shared_buffers, work_mem, эффективность буферного кэша)

- Размеры объектов (таблицы, индексы)

- Чекпоинты и журнал (WAL)

Если какой-то раздел отсутствует, запиши это в раздел «Ограничения анализа». Для имеющихся разделов извлеки ключевые числовые показатели и временные интервалы.

ШАГ 2. ВЫЯВЛЕНИЕ ПРОБЛЕМ

На основе только присутствующих данных выяви проблемы производительности. Типичные проблемы для pgpro_pwr:

- Высокое время ожидания (I/O, lock, network, CPU)

- Неэффективные SQL-запросы (большое время выполнения, высокое число сканирований, seq scans по большим таблицам)

- Проблемы с autovacuum (накопление мёртвых кортежей, слишком частый или редкий vacuum)

- Дефицит памяти (низкая эффективность кэша, свопинг)

- Проблемы с контрольными точками (частые или длительные чекпоинты)

- Блокировки (длительные ожидания, взаимоблокировки)

- Проблемы с индексами (неиспользуемые, отсутствующие, фрагментированные)

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

ШАГ 3. ФОРМИРОВАНИЕ РЕКОМЕНДАЦИЙ

Для каждой выявленной проблемы предложи одну или несколько рекомендаций. Каждую рекомендацию опиши по шаблону:

- Проблема (коротко, со ссылкой на метрику)

- Рекомендация (конкретное действие: изменение параметра, добавление индекса, оптимизация запроса, настройка autovacuum и т.д.)

- Обоснование (почему это поможет, какие ожидаемые изменения метрик)

- Ожидаемый выигрыш (высокий/средний/низкий)

- Сложность реализации (низкая/средняя/высокая) – если нет данных в отчёте, укажи «не оценено»

- Приоритет (вычисляется как выигрыш / сложность, либо указывается логически: высокий, средний, низкий)

Отранжируй все рекомендации по убыванию приоритета. Если две рекомендации имеют одинаковый приоритет — сначала укажи ту, которая даёт более быстрый результат.

ШАГ 4. ИТОГОВЫЙ ОТЧЁТ (выведи в точном соответствии с шаблоном)

=== СВОДНЫЙ АНАЛИТИЧЕСКИЙ ОТЧЁТ ПО pgpro_pwr ===

1. ОБЩАЯ ИНФОРМАЦИЯ

- Интервал сбора: [начало – конец]

- Версия Postgres Pro: [если есть]

- Количество ядер CPU: [если есть] | Память: [если есть]

- Примечание: [если каких-то параметров нет – указать]

2. СВОДКА ПРОИЗВОДИТЕЛЬНОСТИ

- Общая нагрузка: [например, CPU user + system средний %, IO wait средний %]

- Топ-3 ожидания (Wait Events): [событие – % времени]

- Топ-3 проблемных SQL (ID или текст, время/ресурсы)

- Состояние autovacuum: [проблемы или норма]

- Эффективность кэша (buffer cache hit ratio): [если есть]

- Чекпоинты: [частота/длительность, если есть]

- Блокировки: [наличие длительных ожиданий, deadlocks]

3. ВЫЯВЛЕННЫЕ ПРОБЛЕМЫ (перечисление с цифрами)

[например: 1. Высокий IO wait – 35% времени из секции «Top Wait Events»; 2. Seq scan по таблице "orders" размером 2 ГБ – 5000 вызовов в секции «Tables»...]

4. РАНЖИРОВАННЫЕ РЕКОМЕНДАЦИИ ПО ОПТИМИЗАЦИИ

(От самой приоритетной к менее приоритетной)

| Приоритет | Проблема | Рекомендация | Ожидаемый выигрыш | Сложность | Обоснование |

|-----------|----------|--------------|-------------------|-----------|--------------|

| 1 (высокий) | ... | ... | высокий | низкая | ... |

| 2 (средний) | ... | ... | средний | средняя | ... |

5. ОГРАНИЧЕНИЯ АНАЛИЗА (неполнота данных)

- Какие разделы отсутствуют в отчёте

- Какие метрики невозможно оценить

- Рекомендации по сбору дополнительной информации (например, включить pg_stat_statements, снять отчет с меньшим интервалом, добавить системные метрики)

6. ДОПОЛНИТЕЛЬНЫЕ ЗАМЕЧАНИЯ (если нужно)

[Любые нестандартные наблюдения или предупреждения]

Теперь примени все эти правила к переданному содержимому HTML-отчёта pgpro_pwr. Начни с ШАГА 1. Если HTML пустой или не содержит данных – сообщи об этом и не выдумывай цифры.