Как стать автором
Обновить
249.13
Тензор
Разработчик системы СБИС

Self-hosted EXPLAIN: наглядно и безопасно

Время на прочтение2 мин
Количество просмотров7.4K

С момента первой же хабрапубликации о возможностях нашего сервиса визуализации планов запросов PostgreSQL explain.tensor.ru (а было это уже больше 2 лет назад) пользователи задавали резонный вопрос: "Все у вас круто, но у нас в запросах и планах есть коммерческая инфа, которую отправлять куда-то наружу низзя... Можно как-то ваш сервис развернуть на своей площадке?"

Ну, а почему бы и нет, подумали мы - тем более, некоторые пользователи уже интересовались возможностью интеграции нашего сервиса в свои системы.

"Я джва года ждал"
"Я джва года ждал"

Зеркало на Amazon

И начать этот путь мы решили с подготовки сборки для AWS и разворота там зеркала сервиса (explain-postgresql.com), чем помогли некоторым пользователям оперативно обойти обратные блокировки (когда с рабочего места в "забугорье" закрыт доступ к части RU-ресурсов) после начала известных событий.

Self-hosted версия

Ну а теперь мы сделали и выложили полноценные сборки для установки на RHEL/Debian, Docker Linux/Win/MacOS, k8s и AWS - можно свободно попробовать для тестов, отладки и личного использования, а вот корпоративные инсталляции, поддержка и расширенные возможности - на отдельных условиях.

Визуальные улучшения

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

Навигатор

Мгновенно визуально оцениваем с помощью полоски-навигатора, сколько времени занял каждый узел. Клик - и мы стоим на нужном узле:

Навигатор по плану
Навигатор по плану

Если доминируют красные сегменты - вы тратите много времени на чтение данных (Seq Scan, Index Scan, Bitmap Heap Scan, ...), если желтые - на их обработку (Aggregate, Unique, ...), а зеленых Join должно быть не слишком много.

Average IO

Если в вашем плане присутствуют показатели времени, затраченного на операции ввода-вывода (атрибут I/O Timings при включенном параметре track_io_timing), то теперь в строке итогов можно мгновенно оценить усредненные показатели скорости доступа к диску при последовательном и случайном чтении или записи.

Average IO
Average IO

Если вы видите тут цифры в единицы MB/s, хотя база находится на SSD, то где-то в работе дисковой подсистемы явно есть проблема.

Дерево rows/RRbF

На tilemap-диаграмме плана появился новый режим rows - в нем вы можете мгновенно оценить, в каком сегменте плана генерируется или фильтруется чересчур много записей.

В этом режиме подсвечиваются те узлы, на которых было отброшено из-за несоответствия условию (Rows Removed by ...) наибольшее количество записей, а "ширина" связи пропорциональна количеству записей, которые были переданы вверх по дереву.

Чем ярче узел и толще его "ветви", тем более пристально стоит к нему присмотреться:

Дерево rows
Дерево rows

Тултип узла

Наводя курсор на узел в навигаторе или любой другой диаграмме, вы сразу видите все иконки рекомендаций, которые советует наш сервис:

Если это подсказка об индексе, то простого клика по ней достаточно, чтобы перейти к предлагаемым вариантам подходящих индексов.

Также для всех больших чисел в тексте узла добавлены разделители разрядов, чтобы сходу воспринимать порядок величин.

Теги:
Хабы:
+32
Комментарии9

Публикации

Информация

Сайт
sbis.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия