Русский
Русский
English
Статистика
Реклама

Анализируем слона по частям

Если вы регулярно отлаживаете производительность запросов к PostgreSQL, а EXPLAIN (ANALYZE, BUFFERS) ... любимый инструмент познания особенностей работы этой СУБД, то новые полезные фишки нашего сервиса визуализации и анализа планов explain.tensor.ru наверняка пригодятся вам в этом нелегком деле.

Но сразу напомню, что без полноценного всестороннего мониторинга базы PostgreSQL использовать только анализ плана это выступать с позиции мудреца #5!


[источник КДПВ, Слепые и слон]

Самуил Маршак, 1940
Ученый спор

Слепцы, числом их было пять,
В Бомбей явились изучать
Индийского слона.
Исследовав слоновий бок,
Один сказал, что слон высок
И прочен, как стена.

Другой по хоботу слона
Провел рукой своей
И заявил, что слон одна
Из безопасных змей.

Ощупал третий два клыка,
И утверждает он:
На два отточенных штыка
Похож индийский слон!

Слепец четвертый, почесав
Колено у слона,
Установил, что слон шершав,
Как старая сосна.

А пятый, подойдя к слону
Со стороны хвоста,
Определил, что слон в длину
Не больше чем глиста.

Возникли распри у слепцов
И длились целый год.
Потом слепцы в конце концов
Пустили руки в ход.

А так как пятый был силен,
Он всем зажал уста.
И состоит отныне слон
Из одного хвоста!

Итак, сегодня в программе:

  • меняем шевроны на погоны
  • сводим мега-планы
  • ведем персональный архив
  • изучаем генеалогию планов
  • всматриваемся в окна

Не цветом единым!


Исторически, при просмотре плана самые горячие узлы мы отмечали вертикальным шевроном слева от значения чем больше значение, тем насыщеннее цвет.



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



Полезная статистика для мега-планов


Многие не замечают у плана вкладку Статистика, вот она справа:


А кто и заметил вряд ли активно пользовался. Мы решили исправить это упущение, и сделать ее действительно полезной для анализа крупногабаритных планов (100+ узлов).

Группировка узлов


Все одинаковые узлы плана (то есть те, у которых совпадают тип узла, использованная таблица и индекс) группируются в одну строку таблицы. При этом все их показатели (время выполнения, количество прочитанных и отброшенных записей, общее число проходов и объем прочитанных данных) суммируются.

А для наглядности каждый тип узла несет цветовую метку:

  • красная чтение данных
    узлы Seq Scan, Index Scan, CTE Scan и разные другие ... Scan
  • желтая обработка данных
    узлы Sort, Unique, Aggregate, Group, Materialize, ...
  • зеленая соединения
    узлы Nested Loop, Merge Join, Hash Join, ...


Сортировка по любому показателю


Если вдруг вам требуется анализ не по суммарному времени, а типу узла, например просто кликните по заголовку столбца и все будет:



Контекстная подсказка узла


Чтобы детально понять вклад конкретного узла в группе, наведите на номер любого из них и увидите традиционную подсказку, что конкретно там происходило:



Персональный архив планов

Без регистрации и SMS!

Если вы активно пользуетесь нашим сервисом, то теперь найти свои ранее анализировавшиеся планы будет гораздо легче достаточно переключиться на вкладку мои в архиве. Сюда планы попадают независимо от публикации в общем архиве и видны только вам.


Генеалогия планов


Раньше найти в архиве какой-то конкретный из своих планов было достаточно сложно, теперь просто. Их можно именовать и группировать в генеалогическое древо оптимизаций!

Просто укажите имя при добавлении плана:



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



Тогда можно будет оперативно переключаться по всему дереву вариантов, чтобы оценить эффект от тех или иных оптимизаций:



А если ссылка на конкретный план вдруг потерялась, его можно легко опознать по имени в персональном архиве:


Всматриваемся в окна


Небольшое, но полезное усовершенствование Query Profiler, о котором я писал ранее мы научили его заглядывать в окна и правильно сопоставлять с узлами плана:

->  WindowAgg   ==>  WINDOW / OVER      ->  Sort  ==>    PARTITION BY / ORDER BY

как несколько независимых определений окна (WINDOW) в рамках одного запроса:



так и сортировки в оконных функциях без явного определения:



Удачной охоты на разные неэффективности!
Источник: habr.com
К списку статей
Опубликовано: 29.10.2020 14:07:14
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании тензор

Postgresql

Sql

Администрирование баз данных

Визуализация данных

Explain.tensor.ru

Explain

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru