Extended Events для SSAS

Часто в кубах возникает потребность в мониторинге, она связана с падением производительности  работы кубов(торможение при построении отчетов, увеличение времени процессинга). Для того чтобы понять, что случилось, нам необходимо промониторить нашу систему.  Для мониторинга мы используем Profiler, но в последующих версиях  Microsoft планирует убрать данный инструмент мониторинга. Основной его недостаток  ресурсоемкость, запускать на продакшн сервере  рекомендуется очень аккуратно, так как в данном случае можно получить хорошое падение производительности системы. Об этом писали многие блоггеры:

Chris Web — Profiler, Extended Events And Analysis Services. Несмотря на то, что в статье описано, что  Profiler практически не используется на  продакшн в серверах, но все таки подтверждаются его проблемы с нагрузкой на сервер

Pinal Dave — SQL SERVER – SQL Profiler vs Extended Events

Brent Ozar — SQL Server Extended Events

И так Extended Events – это общая система обработки событий для серверных систем. Данная система поддерживает взаимосвязь с SQL Server,  что позволяет получать события о состояниях SQL Server.

Архитектура данной системы показана ниже:

Подробная архитектура расширенных событий

Фактически у нас есть пакет, который содержит события(events), цели(Targets),действия (Actions), Типы(Types), Предикаты(Predicates), Карты(Maps). На сервере запускаются сеансы, которые содержат в себе  события,цели,действия. Я не буду расписывать подробней архитектуру, потому что в документации есть очень подробное описание  https://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx

Теперь вернемся к нашему SSAS. Для того чтобы было более наглядней рассмотрим несколько сценариев, которые мы используем для анализа проблем.

Первый сценарий: Анализ процессинга куба (Многомерный куб)

Часто бывает, что при процессинге куб очень долго обновляется, хотя вроде бы и данных немного. Что бы выяснить причину, нам надо с вами понять, на каком запросе или в каком месте процессинга  у нас происходит торможение. На продакшене запустить процессинг и посмотреть, что же происходит, конечно можно, но я не уверен, что это понравится вашим пользователям. Вот здесь нам на помощь прийдет  Extended Events. Для этого запускаем нашу сессию и настроим ее для сохранение в файл.

Открываем SSMS и подключаемся к SSAS, после чего переходим в Management:

ssms

Здесь мы создаем новую сессию:

  • В вкладке General указываем имя нашей сессии или загружаем шаблон

newsession

  • Вкладка events — это наши события, которые помогут нам проанализировать проблемы. Заходим в вкладку и смотрим, а здесь все старые знакомые, которые были в профайлере. Для  анализа процессинга выбираем следующие события CommandBegin, CommandEnd, ProgressReportBegin and ProgressReportEnd, ResourseUsage :

CommandBegin, CommandEnd  — покажут нам начало и окончания выполнения команд при процессинге

ProgressReportBegin and ProgressReportEnd  — более расширенная информация о длительности каждого  события, показывает чтение данных, выполнение sql запросов, длительность и т.д.

ResourseUsage  — показывает сколько ресурсов было затрачено на выполнение запроса, действия

newevents

После того как выбрали события  можно перейти на конфигурацию каждого события, какие свойства события показывать, какие не показывать(например можно указать, чтоб вам не выводился id  процесса)

  • Вкладка Data Storage. Здесь можем указать, чтобы происходил показ событий live либо записывался в  файл:
    • event_file — сохранение в файл для дальнейшего анализа.  Указываем максимальный объем файла и куда будем сохранять.  В случае достижения данного размера, создается новый файл. Также можно указать, какое количество файлов можно создавать (maximum number files)event_file
    • event_stream – включает возможность просмотра событий в “живую”. То есть просматриваете выполнения трасы в режиме реал таймаeventstream
    • ring_buffer – указывает, что необходимо хранить данные по сеансу в памяти до тех пор, пока сервер запущен. В случае перезагрузки сбрасывает данные.
  • Вкладка Advanced позволяет конфигурировать ресурсы(память, процессор) для  данной сессии

В итоге нажимаем ок и получаем сессию. Запустим процессинг куба и смотрим на процессинг куба по событиям. Переходим на просмотр в режиме live data.

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

2016-12-18-1

В итоге получаем вот такой вид:

proccessing

Как видим, по  используя Extended Events, мы можем в режиме реального времени проанализировать наш процессинг. Понять сколько времени тратится на проссецинг каждого объекта, сколько ресурсов используется при этом. Что позволит сделать нам выводы и найти слабое место в  нашей системе. При этом мы не загрузим систему и  не получим падения производительности.

Также создание сессии возможно через XMLA. Скрипт можно взять на  GitHub

Остановка и удаление  сеанса возможно как через SSMS, так и через скрипт XMLA.

  • Через SSMS(правда в 2016 вылетает ошибка и мне не удалось удалить сессию через интерфейс)

stops

Это первая часть статьи про Extended Events для SSAS. В второй части  мы рассмотрим сценарий анализа производительности запросов в кубе,  работа с файлом трассой и возможностью анализа данного файла через Power BI

Реклама

Автор

Eugene Polonychko

DWH/BI architect, speaker at SQL Saturday conference, member of Ukranian Data Community Kyiv, owner of Donetsk SQL User Group

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s