SlideShare a Scribd company logo
1 of 31
Я построю свой профайлер!
С гридами и кнопками!

Алексей Ковалёв
Спонсоры
SQL Trace: Что и зачем
 Что?
 Набор событий и данных, собранный
Database Engine.

 Зачем?
 Основное – что сейчас происходит на
сервере?
 Собрать статистику выполнения
Методы получения информации






DMV.
Стандартный SQL Profiler.
Server side trace.
Extended events.
И наконец! Профайлер под заказ!
DMV!
 Вы видите
статистику
выполнения!
 Most
executed/expensive
queries, plans, so
on….
Статистика – это круто.
Однако…
Статистика
Каков тип нагрузки?
Пакетная обработка?
Равномерная загрузка?
Рабочие часы?

90

80
70
60
50

Никто не знает 

40

Обобщенная статистика
– не ответ, мы требуем
подробностей!

30
20

10
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Старый добрый профайлер!
 Знакомый инструмент с хорошим UI
 Выбор событий и данных
 Фильтрация
 Группировка
 Сохранение трассы в таблицу/файл
Server side trace
sp_trace_create/sp_trace_setevent
 Быстрый и экономный способ
 Пишет трасу в файл на диск, с rollover/black box
 Результат можно читать профайлером или
fn_trace_gettable
Однако….
 Требует дополнительных ресурсов диска, CPU для
чтения/анализа/визуализации результатов
собранной трассы
Что можно сделать с Server Side Trace
 Мы можем читать трассы, так в чем же
дело?
 Replay Markup Language – RML
 ClearTrace
 Любой инструмент с fn_trace_gettable() /
TraceFile
Extended events
 Продвинутая версия server side trace
 Больше настроек
 Дополнительные потребители событий
Additional event targets (not only files)
 Ловит события, которые не ловит обычная
траса
Так где же истина?
 Никто не совершенен!
 Ни одно из решений не устраивает нас на
все 100%
Единственный выход

Сделай сам!
Мы можем создать свой профайлер!
 А зачем?
 Гибкий и точный контроль трасы
 Продвинутое фильтрование
 Продвинутые преобразования
 Продвинутое группирование

 Требуется меньше ресурсов
 Скользящее окно и раннее отбрасывание данных

 Малые размеры
Зачем изобретать велосипед?
Microsoft.SqlServer.Management.Trace
 TraceTable
 TraceFile
 TraceServer
Давайте же срочно кодить!
 Трасу нужно:
 Создать
 Прочитать
 Понять
Создать и прочитать трасу
declare @ret int,@p1 int
exec @ret = sp_trace_create @p1 output,1,NULL,NULL,NULL
declare @on bit
set @on = 1
--13 - SQL:BatchStarting
exec sp_trace_setevent @p1,13, 1, @on -- TextData
exec sp_trace_setevent @p1,13, 11, @on -- LoginName
exec sp_trace_setevent @p1,13, 12,@on -- SPID
exec sp_trace_setstatus @p1, 1
exec sp_trace_getdata @p1, 0
А понять то как?
 Skip
 Skip until 65526
 EventClass 13 (0x0d) –
SQL:BatchStarting
 Start record
 1 – TextData, “exec sp_who”
 11 – LoginName, “sa”
 12 – SPID, 61
 End record
Вот и всѐ, ребята!
Hello, trace!
Твой собственный
велосипед
профайлер!
Что дальше?






Декодируем курсоры
Ловим планы отдельных запросов
Собираем статистику по параметрам
Логируем выполнение хранимых процедур
Да всѐ что угодно!
Декодируем курсоры
Знакомая картинка, не так ли?

Так что всѐ таки происходит?
Кто-нибудь!
Сделайте что-нибудь!
Декодируем курсоры
sp_prepare/sp_prepexec
sp_execute/sp_fetch
sp_unprepare/sp_close

Вытаскиваем id
курсора и мапим на
текст запроса
Ищем текст запроса
по карте id<->sql
Удаляем курсор из
маппинга
Ловим план отдельного запроса
Например, планы
где reads > 100
Логируем выполнение процедур


Тот же принцип, что и при ловле
отдельного плана









Ловим SP:Starting
Продолжаем ловить
последующие события
Пока не поймаем SP:Completed
Если набранная информация
подпадает под критерий
(например по reads или
времени выполнения) –
сохраняем результат
Отбрасываем накопленную
информацию
Ждем следующего SP:Starting –
и начинаем заново
Собираем статистику по параметрам
 Закон Парето: 20/80
 20% значений используются в 80% запросов

 Как собирать?





Ловим стейтмент
Разбираем его (regexp/парсер)
Извлекаем параметры и их значения
Собираем статистику
Собираем детальную информацию
Распределение запросов по длительности
Распределение запросов по времени суток

GetBalance
10

20

30

40

50

60

70

80

90

PayDebt

100

CancelOrder

Окрестности запроса
0-6

7-12

13-19

20-24
Техническая поддержка приложений
 Автоматические или полуавтоматические
 Сбор трасы
 Сбор статистики выполнения
 Соотнесения трасы запросов и счетчиков
производительности Windows
Resources
http://msdn.microsoft.com/en-us/library/hh245121.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.trace.aspx
http://support.microsoft.com/kb/944837
https://expressprofiler.codeplex.com/
http://technet.microsoft.com/en-us/library/cc293613.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.transactsql.scriptdom.tsqlparser.aspx
Сообщество
 Russian SQL Server UG
 https://www.facebook.com/groups/144858492215825/
 http://ineta.ru/sqlrus/

 RuBI PASS Chapter
 https://www.facebook.com/groups/148075185212163/
 http://ineta.ru/rubi/
Спонсоры
Спасибо!

More Related Content

What's hot

Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Alexey Lesovsky
 
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Ontico
 
Boost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почемуBoost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почемуcorehard_by
 
Базы данных. MongoDB
Базы данных. MongoDBБазы данных. MongoDB
Базы данных. MongoDBVadim Tsesko
 
Базы данных. Hash & Cache
Базы данных. Hash & CacheБазы данных. Hash & Cache
Базы данных. Hash & CacheVadim Tsesko
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
 

What's hot (8)

Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)
 
Cassandra
CassandraCassandra
Cassandra
 
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
 
Boost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почемуBoost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почему
 
Smokoko S.A.: Art engineering
Smokoko S.A.: Art engineeringSmokoko S.A.: Art engineering
Smokoko S.A.: Art engineering
 
Базы данных. MongoDB
Базы данных. MongoDBБазы данных. MongoDB
Базы данных. MongoDB
 
Базы данных. Hash & Cache
Базы данных. Hash & CacheБазы данных. Hash & Cache
Базы данных. Hash & Cache
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 

Viewers also liked

Lifestyle balance-piee
Lifestyle balance-pieeLifestyle balance-piee
Lifestyle balance-pieePhuong Nguyen
 
Critical approaches
Critical approachesCritical approaches
Critical approacheshayleylou11
 
Weimar Electio and Epilogue
Weimar Electio and EpilogueWeimar Electio and Epilogue
Weimar Electio and Epiloguetimothyjgraham
 
Ave maria justiça e amor
Ave maria   justiça e amorAve maria   justiça e amor
Ave maria justiça e amorFatoze
 
Lifestyle balance-pie -e
Lifestyle balance-pie -eLifestyle balance-pie -e
Lifestyle balance-pie -ePhuong Nguyen
 
CV(joshy C D)
CV(joshy C D)CV(joshy C D)
CV(joshy C D)joshy c d
 
Bespreking artikels omtrent economisch onderwerp
Bespreking artikels omtrent economisch onderwerp Bespreking artikels omtrent economisch onderwerp
Bespreking artikels omtrent economisch onderwerp teddybeervantittelboom
 
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...GeeksLab Odessa
 
Pt client-and-heaelth-history-for-big-loser-community
Pt client-and-heaelth-history-for-big-loser-communityPt client-and-heaelth-history-for-big-loser-community
Pt client-and-heaelth-history-for-big-loser-communityPhuong Nguyen
 
Алексей Новиков "Городские электронные сервисы ОТ ТЕХНОЛОГИЙ К ИНСТИТУТАМ"
Алексей Новиков "Городские электронные сервисы ОТ ТЕХНОЛОГИЙ К ИНСТИТУТАМ"Алексей Новиков "Городские электронные сервисы ОТ ТЕХНОЛОГИЙ К ИНСТИТУТАМ"
Алексей Новиков "Городские электронные сервисы ОТ ТЕХНОЛОГИЙ К ИНСТИТУТАМ"mosurban
 
PrestaShop Private Sales FME's Module User Guide
PrestaShop Private Sales FME's Module User GuidePrestaShop Private Sales FME's Module User Guide
PrestaShop Private Sales FME's Module User GuideFMEModules
 
What near-death experiences (NDEs) teach us
What near-death experiences (NDEs) teach usWhat near-death experiences (NDEs) teach us
What near-death experiences (NDEs) teach usExopolitics Hungary
 
E03-08_HighPerformanceDataCenters
E03-08_HighPerformanceDataCentersE03-08_HighPerformanceDataCenters
E03-08_HighPerformanceDataCentersTom Watanabe
 

Viewers also liked (19)

Lifestyle balance-piee
Lifestyle balance-pieeLifestyle balance-piee
Lifestyle balance-piee
 
Critical approaches
Critical approachesCritical approaches
Critical approaches
 
yz7370
yz7370yz7370
yz7370
 
Weimar Electio and Epilogue
Weimar Electio and EpilogueWeimar Electio and Epilogue
Weimar Electio and Epilogue
 
Chapter4
Chapter4Chapter4
Chapter4
 
Ave maria justiça e amor
Ave maria   justiça e amorAve maria   justiça e amor
Ave maria justiça e amor
 
Lifestyle balance-pie -e
Lifestyle balance-pie -eLifestyle balance-pie -e
Lifestyle balance-pie -e
 
Speaking card-106e
Speaking card-106eSpeaking card-106e
Speaking card-106e
 
CV(joshy C D)
CV(joshy C D)CV(joshy C D)
CV(joshy C D)
 
Bespreking artikels omtrent economisch onderwerp
Bespreking artikels omtrent economisch onderwerp Bespreking artikels omtrent economisch onderwerp
Bespreking artikels omtrent economisch onderwerp
 
Siap
SiapSiap
Siap
 
dfdsfdsf
dfdsfdsfdfdsfdsf
dfdsfdsf
 
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
 
Pt client-and-heaelth-history-for-big-loser-community
Pt client-and-heaelth-history-for-big-loser-communityPt client-and-heaelth-history-for-big-loser-community
Pt client-and-heaelth-history-for-big-loser-community
 
Алексей Новиков "Городские электронные сервисы ОТ ТЕХНОЛОГИЙ К ИНСТИТУТАМ"
Алексей Новиков "Городские электронные сервисы ОТ ТЕХНОЛОГИЙ К ИНСТИТУТАМ"Алексей Новиков "Городские электронные сервисы ОТ ТЕХНОЛОГИЙ К ИНСТИТУТАМ"
Алексей Новиков "Городские электронные сервисы ОТ ТЕХНОЛОГИЙ К ИНСТИТУТАМ"
 
PrestaShop Private Sales FME's Module User Guide
PrestaShop Private Sales FME's Module User GuidePrestaShop Private Sales FME's Module User Guide
PrestaShop Private Sales FME's Module User Guide
 
What near-death experiences (NDEs) teach us
What near-death experiences (NDEs) teach usWhat near-death experiences (NDEs) teach us
What near-death experiences (NDEs) teach us
 
E03-08_HighPerformanceDataCenters
E03-08_HighPerformanceDataCentersE03-08_HighPerformanceDataCenters
E03-08_HighPerformanceDataCenters
 
Lifestyle
LifestyleLifestyle
Lifestyle
 

Similar to Я построю свой профайлер!

Dmitry Menshikov "Release after the year of development: fierce debug to the ...
Dmitry Menshikov "Release after the year of development: fierce debug to the ...Dmitry Menshikov "Release after the year of development: fierce debug to the ...
Dmitry Menshikov "Release after the year of development: fierce debug to the ...Fwdays
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)Ontico
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016Anastasia Goryacheva
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Andrew Mayorov
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кодаTatyanazaxarova
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаAndrey Karpov
 
Собираем будильник правильно
Собираем будильник правильноСобираем будильник правильно
Собираем будильник правильноVitebsk Miniq
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Ontico
 
Методики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиМетодики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиCisco Russia
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищиCUSTIS
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаAleksandr Boichenko
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20DefconRussia
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Mikhail Shcherbakov
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаMikhail Shcherbakov
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017Alex Chistyakov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 

Similar to Я построю свой профайлер! (20)

Dmitry Menshikov "Release after the year of development: fierce debug to the ...
Dmitry Menshikov "Release after the year of development: fierce debug to the ...Dmitry Menshikov "Release after the year of development: fierce debug to the ...
Dmitry Menshikov "Release after the year of development: fierce debug to the ...
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кода
 
Собираем будильник правильно
Собираем будильник правильноСобираем будильник правильно
Собираем будильник правильно
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
Методики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиМетодики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сети
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
 
20110227 csseminar alvor_breslav
20110227 csseminar alvor_breslav20110227 csseminar alvor_breslav
20110227 csseminar alvor_breslav
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 

Я построю свой профайлер!