MSSQL: тепловые диаграммы индексов в виде TreeView

от автора

Вам интересно, какие индексы используются больше или меньше? Какие не используются вовсе? Какие таблицы и индексы самые большие? Очень легко создать такие диаграммы. Это и красиво, и полезно.

Подготовка окружения

Как всегда, мы будем вытаскивать данные с production, где, скорее всего, ставить ничего нельзя. Поэтому все делаем на нашем компе, а данные будет переносить с сервера.

У вас должен стоять Python с Kinter. Поставьте пакеты plotly, numpy, pandas и kaleido. Далее из репозитория https://github.com/tzimie/sqlpig скачайте heatmap.sql и heatmap.py.

Stored procedure из heatmap.sql надо поставить на целевом сервере, в «технической» базе (которая есть повсюду, как только их не называют).

Создание диаграммы

Вызовите процедуру на целевом сервере. Результат сохраните (Save result to CSV) и передайте на ваш компьютер. Интерфейс программы на питоне такой:

Например, если мы имеем size.csv то запускаем:

В браузере получаем знакомую всем TreeView в палитре thermal, причем цвета показывают «температуру» по логарифму одной из метрик (seeks, scans, updates). Но в tooltip показываются все значения.

Диаграмма «живая» и кликабельна. Она сохраняет это свойство, если ее в браузере сохранить в файл(ы) как страницу целиком.

Что можно выяснить с помощью этой диаграммы?

Напомню, что данные в sys.dm_db_index_usage_stats заполняются с момента старта сервера. После его рестарта выдержите время чтобы собралась релевантная статистика.

Если у вас есть AlwaysOn с вторичными нодами, с которых можно читать, то возможно, что есть индексы бесполезные на первичной ноде, но полезные на вторичной (такое бывает, например, если первичная нода OLAP а вторичная OLTP/Reporting)

Seeks показывают степень активности таблиц. Если индекс в таблице черный (seeks=0) то смотрите scans. Если оба значения около нуля, то индекс (почти) не используется.

Scans наоборот — если таблица в OLTP системе «горячая» по scans, то скорее всего индексов не хватает.

Наконец updates показывает все index updates — SQL вынужден отражать изменения данных во всех индексах, в том числе и ненужных. Черные, холодные таблицы — скорее всего архив. Можно рассмотреть вопрос о целесообразности их хранения


ссылка на оригинал статьи https://habr.com/ru/articles/900722/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *