SQL Profiler - это инструмент, предоставляющий пользовательский интерфейс для утилиты SQL Trace, которая собирает события по мере их возникновения в экземпляре SQL Server. Это дает возможность отслеживать все, что происходит внутри экземпляра. ПО предоставляет простой в использовании интерфейс, который позволяет выбирать события отслеживания и место, где нужно сохранить вывод.
Позитивным является то, что пользователям, работающим с программой, не требуется знание всех системных процессов, являющихся частью SQL Trace. Без этого инструмента им пришлось бы пройти через утомительный процесс ручной настройки каждого этапа и выполнить фильтрацию с отдельными вызовами хранимых процедур.
Принцип работы SQL Server Profiler
Инструмент работает, обеспечивая администраторам БД и разработчикам общее представление о системе. Пользователи создают трассировки для сбора данных и отслеживания ошибок. Затем используют профилировщик для хранения, извлечения и графического просмотра результатов трассировок в целях устранения неполадок и ремонта. Эта функция происходит на стороне клиента, то есть она использует ресурсы на той же машине, за которой наблюдает.
Чтобы запустить ПО, переходят в "Пуск" > "Программы" > Microsoft SQL Server > "Инструменты производительности" > SQL Profiler.
Список преимуществ ПО для разработчиков и администраторов баз данных:
- Ясность - демонстрация работы экземпляра, когда он взаимодействует с клиентом.
- Средство устранения проблем - помогает сосредоточиться на критичных точках, позволяя захватывать и воспроизводить ключевые события. Эта функция также помогает в стресс-тестировании и идентификации медленно выполняющихся запросов.
- Разрешает пользователям без прав администратора безопасно создавать следы, может удовлетворить потребности администраторов, разработчиков баз данных, специалистов по бизнес-аналитике, ИТ-специалистов и даже бухгалтеров.
- Сравнивает активность с базовыми показателями. Это позволяет юзерам сохранять данные трассировки и сравнивать их с новыми данными, чтобы выявить проблемные места.
- Захватывает трассировки для Transact-SQL, служб SSIS и аналитики.
Инструменты анализа баз данных
Администратору баз данных необходимы инструменты, позволяющие анализировать действия в БД SQL Server для устранения возможных проблем приложения, БД или просто для мониторинга общего состояния системы. Доступ к интерфейсу SQL Profiler получают из Server Management Studio.
Он представляет простой в использовании интерфейс, который позволяет пользователю выбирать события и отслеживать, где сохранять вывод, без необходимости знать все системные хранимые процедуры, которые являются частью SQL Trace. Без этого инструмента пришлось бы пройти через утомительный процесс ручной настройки каждого этапа и выполнить фильтрацию с отдельными вызовами хранимых процедур для каждого события, которое требуется настроить в своей трассировке.
SQL Profiler имеет много вариантов использования, но его главная цель - отслеживать активность в экземпляре Server. Если есть проблема с последним или просто нужно проверить общее состояние и производительность базы данных, программа дает возможность отслеживать все - от обычной пользовательской активности и транзакции до блокировок и систем ошибки. И также можно выполнить упреждающее обслуживание экземпляра для выявления любых неэффективных запросов, настроек и использовать для захвата большого периода времени воспроизведения тестовой системы.
Наконец, MS SQL Profiler используется для выполнения аудита. У пользователя есть возможность определять данные входа и выхода из системы, чтобы видеть, кто обращается к экземпляру и из каких систем они получают к нему доступ. Можно записывать все события DDL, которые будут содержать журнал всех изменений, внесенных в среду.
Доступные версии программы
MS SQL Profiler доступен только в выпусках SQL Server Enterprise, Business Intelligence и Standard, однако если в среде установлен выпуск Enterprise или Standard, его можно использовать для профилирования любых других выпусков, например, Express SQL Profiler или Web. Расширенные события были выпущены в Server 2008, который считается заменой Profiler или Trace, по-прежнему широко используется и продолжает представлять ценность для удовлетворения многочисленных потребностей администраторов баз данных.
Как при установке MS SQL server Profiler, так и при создании схемы БД существуют рекомендации, которые следует соблюдать. Есть также некоторые советы, которые следует учитывать при настройке трассировки с использованием Profiler. Эти рекомендации помогут пользователю контролировать экземпляр Server, не вызывая чрезмерных расходов и не увеличивая влияние на проблему производительности.
Шаблоны для быстрого доступа
Есть несколько вариантов запуска Profiler. В разных версиях Windows открывают его через «Пуск» или из Metro Interface в более поздних выпусках. Более продвинутые пользователи предпочитают просто запустить его из SSMS, который всегда открыт. Юзер может найти SQL в меню инструментов.
После запуска приложения открывают диалоговое окно, позволяющее выполнить подключение к серверу, который нужно профилировать. Из раздела «Рекомендации» подключаются к удаленному серверу. После того как заполнены данные подключения, нажимают «Подключиться».
Теперь, когда пользователь подключен к серверу, он увидит окно «Свойства трассировки», в котором есть две вкладки. Первая - «Общие» - позволяет называть след.
Перед тем как пользоваться SQL Profiler, требуется выбрать шаблон для сбора данных. Шаблоны - это в основном сохраненный набор событий и столбцов данных, которые нужно отследить. Они позволяют быстро запустить трассировку без необходимости вручную выбирать все события и столбцы данных при каждом запуске нового сеанса. Microsoft предоставляет несколько вариантов, по умолчанию выбран «Стандартный».
Далее определяют, где сохранить данные трассировки, если пользователь не хочет просто просматривать их в графическом интерфейсе. Есть возможность сохранить данные в файл и указать параметры ролловера (скрытые в настройках шаблона), либо в таблице с уточнением количества строк в ней. Определяют время остановки для трассировки.
Выбор событий для отслеживания
На второй вкладке в этом окне «Выбор» настраивают, какие события нужно отслеживать и какие столбцы требуется включить по конкретному событию. На вкладке добавляют фильтры и изменяют порядок организации данных в правом нижнем углу интерфейса. Поскольку на предыдущей вкладке выбран шаблон «Стандарт», события и столбцы данных уже заполнены. На этом этапе редактируют или просто нажимают «Выполнить», чтобы запустить трассировку как есть. После в правом нижнем углу появится экран, который отображает события по мере их захвата.
Для того чтобы приостановить или остановить трассировку, можно использовать кнопки на панели инструментов. Все события сохраняются перед перезапуском, иначе они будут утеряны. Если пользователь приостановит трассировку, он не потеряет данные, которые собрал, но пропустит все события, произошедшие во время приостановки.
Событие - это действие, которое происходит в пользовательском экземпляре базы данных SQL Profiler Oracle. В трассировке можно настроить более 150 различных событий.
Чтобы добавить события в сеанс, переходят на вкладку «Выбор событий». В правом нижнем углу экрана есть флажок «Показать все события». Если установить его, он перечислит все события в окне выше. Также отмечают флажок «Показать все столбцы», чтобы при выборе события были выбраны все столбцы данных.
Определение столбцов данных
Столбец данных - это фрагмент данных, который описывает некоторую часть события, произошедшего в БД. Такие вещи, как вход в систему, время начала, успешное или неудачное событие - это разные типы данных, которые можно собирать для настроенного в сеансе трассировки SQL.
Существует более 60 столбцов данных, которые можно добавить к трассировке, но в зависимости от того, какое событие выбрано, данный столбец может быть доступным или нет. Для просмотра описания доступных столбцов необходимо сначала выбрать настраиваемое событие.
Чтобы добавить столбцы в сеанс, открывают вкладку «Выбор». Устанавливают флажок «Показать все». В окне выше будут отображаться флажки для каждого доступного для любых открытых событий. В качестве альтернативы выбирают отдельные столбцы каждого события, и нужно либо выбрать сам столбец, либо выбрать проверяемое событие.
Фильтры в сеансе трассировки
Profiler позволяет пользователю фильтровать данные, захваченные в сеансе SQL. r, чтобы ограничить объем захватываемых. Фильтр применяется к любому столбцу, являющемуся частью выбранного события. Даже если столбец не сохранен как часть сеанса трассировки SQL, все равно применяют фильтры на его основе. Чтобы создать фильтр, выбирают кнопку «Фильтры столбцов» на вкладке «Выбор».
После выбора откроется диалоговое окно «Редактировать фильтр». Далее выбирают столбец данных LoginName, в котором содержатся предложения сравнения текста, и отфильтровывают с помощью LoginName, например, именем «Сервер». При использовании оператора LIKE следует иметь в виду, что если пользователь не включит подстановочный знак «%», он будет рассматриваться как оператор равенства (=). Например, если нужно найти какого-либо оператора, выполненного именем входа, которое начинается с «app», в качестве фильтра будет «app%». В зависимости от выбранного столбца появятся различные операторы сравнения.
Рекомендации по настройке
Profiler - отличный инструмент, который позволяет увидеть, что происходит внутри Server, и поможет пользователям выяснить, какие наихудшие запросы, как часто выполняется запрос.
Для реализации наилучших возможных индексов выполняют 4 шага:
- Сбор текущей информации о рабочей нагрузке.
- Определение соответствия индексов рабочей нагрузке, используя Profiler.
- Обновление индексов с помощью Tuning Advisor.
- Профилировщик автоматизирует сбор данных рабочей нагрузки, а консультант по настройке берет эти данные и создает индексы.
Для отслеживания в конкретной БД используют функцию фильтрации столбцов. Запускают трассировку через шаблон настройки и сохраняют данные трассировки в его файл.
Алгоритм процесса:
- Нажимают на "Инструменты".
- Открывают помощник настройки ядра.
- Предоставляют трассирующий файл.
- Выбирают БД, в которой необходимо выполнить процесс трассировки.
- В "Настройках" переходят в "Дополнительные параметры" и определяют максимальное пространство для рекомендации.
- Начинают анализ.
Результаты показывают, насколько можно добиться улучшения, если предложения будут реализованы, и что нужно реализовать для повышения скорости работы БД.
Для того чтобы перехватить взаимоблокировки с помощью Profiler, делают следующее:
- Фиксируют тупик, сначала подключаются к БД Server.
- Открывают Profiler в Server Management Studio.
- Нажимают на "Инструменты".
- Нажимают на Profiler.
Подключение к серверу и анализ ситуации
Перед тем как начать пользоваться SQL Server Profiler, подключаются к серверу, на котором нужно выполнить профилирование. В окне «Свойства трассировки» на вкладке «Общие» выбирают пустой шаблон. На вкладке «Выбор событий» выбирают график «тупик» в разделе «Лист блокировки».
Выполняют следующие запросы:
- выполнить запрос в синем прямоугольнике;
- выполнить запрос в зеленом прямоугольнике;
- выполнить запрос, выделенный серым цветом;
- выполнить запрос, выделенный синим.
Обращают внимание, что идентификаторы процессов отображаются на информационной панели в SQL. "Мертвая блокировка" будет сгенерирована при выполнении 4-го шага: для последующего анализа это можно сохранить в меню "Файл" -> "Экспорт" -> "Извлечь события SQL Server" -> "Извлечь события взаимоблокировки".
Анализ графа тупиковой ситуации:
- Овальный с синим крестиком представляет транзакцию или процесс, который был выбран в качестве жертвы тупика SQL Server.
- Овалы представляют процессы, а крест - транзакцию или процесс, который успешно завершен.
- Приоритет взаимоблокировки установлен по умолчанию «0».
У пользователя есть журнал транзакций. Если транзакция сделала много обновлений, размер журнала будет больше. Следовательно, для выполнения той, которая выполнила большое количество обновлений, потребуется много затрат.
HoBtID (идентификатор кучи или двоичного дерева), связанный с узлом ресурса, используется для поиска объекта базы данных, участвующего во взаимоблокировке, и представлен с помощью следующего запроса:
- SELECT object_name([object_id]) from sys.partitions;
- WHERE hobt_id = xxxxxx.
Стрелки представляют типы блокировок, которые имеются на каждом узле ресурса. Обозначения X и S на стрелках представляют эксклюзивные и общие блокировки.
Использование профиля в 1С
SQL Server Profiler с графической оболочкой используется в бухгалтерской программе 1С для создания трасс и анализа результирующей трассировки с сохранением событий в трассировочных файлах. На их базе выполняется анализ ситуации образовавшихся проблем.
Для создания треков в Profiler запускают программу, формируют маршрут и настраивают анализ индикаторов. Перед тем как настроить для 1С SQL Profiler, выполняют следующие шаги:
- Указывают имя трассы General, где удаленные данные трассировки будут храниться.
- На вкладке «Выбор события» показаны события для отслеживания
- Начинают трассировку в профилировщике для 1С после выполнения настроек через кнопку «Выполнить».
- Например, запускают трек «Получение материалов», чтобы отследить операции, которые занимают больше всего времени.
- После получения данных анализируют их.
- Анализ профиля сохраняют в файле или в таблице, например, под названием «материалы».
- После сохранения работают с ней как с обыкновенной таблицей SQL.
Альтернативные инструменты профилировщика
Несмотря на популярность SQL Profiler, это не единственный способ отслеживать сервер. Следующие альтернативы выполняют аналогичную функцию:
- Prefix. Одна из замечательных функций, которую имеет Prefix - это просматривать запросы SQL прямо из кода приложения, чтобы получать не только точные, но и контекстные сведения. Он бесплатный, невероятно надежный и предоставляет подробные сведения о каждом веб-запросе.
- ExpressProfiler - альтернатива, которая использует простой и быстрый графический интерфейс пользователя.
- Neor Profile SQL предоставляет аналогичные возможности для пользователей MySQL.
Трассировка на стороне сервера считается лучшей, поскольку на стороне клиента может истощать достаточно локальных ресурсов для искажения результатов. Такой вид трассировки не использует ресурсы на стороне клиента, требует меньших затрат и обеспечивает более точный мониторинг и отчетность.
Таким образом, очевидно, что профилировщик позволяет разработчикам и администраторам баз данных (DBA) создавать и обрабатывать трассировки, а также воспроизводить и анализировать их результаты.