В прошлой статье о Dasha, описана версия 1.5.0. С тех пор вышли релизы с 1.5.1 по 1.8.1: в них появились рекомендации по индексам, страница ввода-вывода на pg_stat_io, проверки схемы и анализ логов с планами auto_explain, новые mcp tools. Читать далее
Панель на странице индексов разбирает запросы из pg_stat_statements со всех хостов кластера парсером PostgreSQL и предлагает недостающие btree-индексы. Для каждого кандидата выводятся колонки и порядок ключа, текст запроса CREATE INDEX, список покрываемых запросов и их доля в общем времени выполнения. Показаны счётчики INSERT, UPDATE и DELETE по таблице. Для партиционированной таблицы формируется скрипт с ON ONLY, CONCURRENTLY и ATTACH PARTITION.
Индекс - “Кандидат” не предлагается, если существующий индекс уже его покрывает. Условие IS NULL по колонке с редкими NULL уходит в предикат частичного индекса, а не в ключ. Предупреждений три: те же колонки уже есть в другом индексе, на таблице уже десяток индексов, запись в таблицу идёт заметно чаще чтения. Рекомендация эвристическая, DDL не выполняется. В дальнейшем планирую добавить разбор запросов, которые есть в логах, а не только в pg_stat_statements.
Рекомендации можно подкрепить планами auto_explain из логов кластера. У кандидата выводятся число планов за последний час с Seq Scan, время этих узлов и число строк, отброшенных фильтром. Если планировщик ошибся в оценке числа строк таблицы, появляется предупреждение: сначала ANALYZE, потом CREATE INDEX.
Ввод-выводСтраница “I/O” на основе pg_stat_io. Ввод-вывод сервера разложен по типу процесса, объекту и контексту (normal, vacuum, bulkread, bulkwrite). На PostgreSQL 18 в график и детализацию попадает и журнал предзаписи. Показывается эффективность shared_buffers, утилизация от процессов автоочистки и массовых операций.
История строится по снимкам pg_stat_io (настраивается интервал сбора, хранится в своей базке), Есть Live режим, можно без снимков и своей базы смотреть дельты pg_stat_io. Графики показывают счётчики или время. Для времени нужно включить track_io_timing, track_wal_io_timing.

Проверки схемыСтраница проверок схемы собирает дефекты структуры, которые не видны, пока не приведут к аварии. Проверок пока семнадцать, будут добавляться. Среди них последовательность на грани исчерпания, таблица без первичного/уникального ключа, UNLOGGED-таблица или последовательность, схема, в которой PUBLIC может создавать объекты (CVE-2018-1058), UUID в varchar, таблицы без колонок, имя объекта, совпадающее с зарезервированным словом или требующее кавычек. В отчёт входят и находки со страниц индексов и внешних ключей: невалидные ограничения, несовпадение типов во внешних ключах, nullable-ключи, похожие ключи и индексы, B-tree по массивам.
Находки делятся на три уровня: error, warning и notice. У каждой описаны последствия и способ исправления, а где решение однозначно, приложен готовый SQL. Дефект, найденный на партициях одной таблицы, показывается один раз, на родительской.
ЛогиВ предыдущих версиях поиск по логам был только для managed yandex базок. Появились OpenSearch / Elasticsearch и VictoriaLogs.
На странице анализа логи группируются по категориям: дедлоки, ожидания блокировок, отмененные запросы, чекпоинты, автовакуум, временные файлы, ошибки. У каждой категории выводятся доля записей и самые частые сообщения.
На табе “Планы” можно анализировать логи от auto_explain сгруппированные по запросу и форме плана. По каждой группе выводятся число планов, суммарное и максимальное время, p50 и p95, в дереве плана подсвечены последовательное чтение большой таблицы, ошибка оценки числа строк, сортировка на диске и резкий рост числа повторов узла.
Можно искать запросы, которым стало хуже: у них сменилась форма плана, пропал индекс или вырос p95.


Запросы, базы, сессииНа кластерах Postgres Pro без pg_stat_statements статистика запросов читается из pgpro_stats.
Отчёт по запросам, топ-10 и графики научились строиться по выбранной базе или по всему инстансу. В режиме инстанса у каждой строки указана её база.
В списке активных запросов показаны тип и событие ожидания, адрес клиента и состояние сессии; блокирующие ожидания подсвечены, фоновые приглушены.
MCP-коннектор31 инструмент: список кластеров и ранжирование их здоровья, Health Score с трендом, разбивкой по базам и рекомендациями, топ и отчёт по запросам, снимки и их сравнение, активные и заблокированные сессии, индексы, таблицы, репликация, настройки кластера, wait events, соединения, риск wraparound и поиск по логам любого подключённого источника.
Часть инструментов возвращает не сырые счётчики, а готовый ответ. Разбор рекомендации Health Score называет сами объекты: таблицы с выключенным автовакуумом или низкой долей HOT-обновлений, базы у горизонта wraparound, сессии, удерживающие горизонт. Отчёт по неиспользуемым индексам работает по всему кластеру, можно ли удалить индекс. Рекомендации по индексам приходят с готовым DDL, запросами и долей нагрузки. Инструменты по вводу-выводу раскладывают чтение и запись между клиентами, автовакуумом, чекпойнтером и walwriter и показывают, как это менялось во времени.
Пять сценариев ведут модель по шагам: диагностика кластера, разбор Health Score, поиск возможностей для индексов, расследование медленных запросов, обзор парка кластеров. На каждом шаге один инструмент и критерий, как трактовать результат; сценарии рассчитаны и на модели без глубокого знания PostgreSQL. Базу знаний из шести разделов модель читает по запросу: правила Health Score с порогами и первыми действиями, коды проверок схемы, чтение рекомендаций по индексам, счётчики pg_stat_io, глоссарий wait events, типовые жалобы и цепочки инструментов для них. База знаний, сценарии и инструкции для модели есть на русском и английском.
Все инструменты read-only.
СсылкиИсходный код, документация и полный список изменений: https://github.com/dbulashev/dasha
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Мы написали автономного агента для VACUUM/ANALYZE и запустили на 800+ тестовых БД: что из этого вышло | 0 | 8.16 | 23-09-2026 |
| 2 | Анатомия FASTTRUNCATE: как 1С работает с временными таблицами в PostgreSQL | 0 | 7.98 | 15-09-2026 |
| 3 | PostgreSQL: три источника времени в одной таблице | 0 | 7.29 | 24-09-2026 |
| 4 | Postgres Professional выпустила Postgres Pro Enterprise 18.4.1 с масштабированием нагрузки на реплики | 5 | 7 | 01-07-2026 |
| 5 | Каждые 5 минут транзакции в высоконагруженной PostgreSQL базе внезапно замирают ... | 0 | 11.86 | 24-09-2026 |
| 6 | Записки оптимизатора 1С (ч.20). На сколько реально настройки Huge Pages для Postgres могут ускорить запросы 1С | 0 | 6.7 | 23-09-2026 |
| 7 | JOIN как в ORM: связи по foreign key в PostgreSQL | 0 | 7.3 | 02-08-2026 |
| 8 | Каждые 5 минут транзакции в PostgreSQL замирают на 3 - ... | 0 | 10.65 | 25-09-2026 |
| 9 | Я дважды неправильно объяснил один баг в ora2pg | 0 | 11.17 | 24-09-2026 |
| 10 | «К2Тех» включила новую аналитическую СУБД Postgres Pro Axe в портфель решений по работе с данными | 0 | 5 | 07-07-2026 |