Профилирование sql. Использование SQL Profiler (профилировщика)

30.10.2019 Сотовые операторы

При разработке прикладных модулей системы Lexema.ru периодически возникает потребность в анализе запросов к БД при работе экранных форм, запросов, отчётов, хранимых процедур и других объектов для диагностирования проблем. Для решения подобных задач предназначены инструменты профилирования SQL-запросов. Они позволяют:

  • отслеживать события разных типов на сервере БД (выполнение запросов, хранимых процедур и т.п.)
  • фильтровать события по различным критериям (имя БД, логин пользователя и т.п.)
  • записывать последовательность действий в виде трассировки событий. В последствии трассировка может быть проанализирована, а также сохранена в файл или в БД.
  • анализировать производительность (скорость выполнения) запросов для поиска и устранения "узких мест" системы
  • и т.п.

В данной статье рассмотрены два инструмента:

  • Lexema SQL Profiler, встроенный в моделлер приложения
  • MS SQL Server Profiler, входящий в состав MS SQL Server

Lexema SQL Profiler

Данный инструмент предназначен для анализа запросов к серверу БД, инициируемых моделлером - программой для разработки прикладных конфигураций. С его помощью можно исследовать структуру БД прикладной логики и её объектов.

Для использования Lexema SQL Profiler запустите моделлер приложения. Нажмите на кнопку с изображением бочки в левом верхнем углу окна:

Для начала записи трассировки SQL-запросов моделлера к серверу БД нажмите кнопку "Запустить" на панели инструментов.

Выполните в моделлере действия, для которых требуется изучить запросы к БД. Например, после открытия списка моделей будет создана трассировка из нескольких запросов:

Таблица сверху содержит список событий (SQL-запросов), поле внизу - содержимое (SQL-код)

Поля таблицы:

  • EventClass
  • TextData
  • Duration
  • StartTime
  • EndTime
  • ApplicationName
  • Reads
  • Writes
  • Transaction

К примеру, из трассировки событий при открытии списка моделей можно сделать следующие выводы: запрашиваются данные из трёх таблиц (L8_Model, L8_ModelProperty и L8_Namespace); самый длительный запрос производится к таблице L8_ModelProperty (242 мс).

MS SQL Server Profiler

MS SQL Server Profiler - это инструмент, входящий в состав пакета MS SQL Server, позволяющий перехватывать события сервера БД. События могут быть сохранены в файле трассировки или в БД для дальнейшего анализа или использования с целью повторения определенной серии шагов для воспроизведения проблемы для её диагностики. Типовые сценарии использования SQL Server Profiler:

  • контроль производительности экземпляра SQL Server Database Engine
  • отладка инструкций Transact-SQL и хранимых процедур
  • анализ производительности путем выявления медленно работающих запросов
  • выполнение стресс-тестирования и контроля качества посредством воспроизведения трассировок
  • воспроизведение трассировки одного или нескольких пользователей
  • проверка инструкций Transact-SQL и хранимых процедур на стадии разработки проекта в пошаговом режиме для гарантии правильного выполнения кода
  • устранение проблем в SQL Server с помощью перехвата событий в производственной системе (production-версии) и воспроизведения их в отладочной (тестовой версии). Это очень полезная возможность, поскольку позволяет во время проверки или отладки продолжать использовать производственную систему.
  • аудит и отслеживание действий, происходящих в экземпляре SQL Server. Эта возможность позволяет администратору безопасности просматривать любые события аудита, в частности успешные и неудачные попытки входа в систему и разрешений доступа к инструкциям и объектам
  • сохранение результатов трассировки в формате XML, что обеспечивает стандартизованную иерархическую структуру хранения результатов трассировки. Это позволяет вносить изменения в существующие трассировки или создавать их вручную для последующего воспроизведения
  • статистический анализ результатов трассировки, позволяющий производить группирование и анализ похожих классов событий. В результатах содержатся счетчики, полученные на основе группирования по одному столбцу
  • предоставление возможности создания трассировки пользователям, не являющимся администраторами
  • настройка шаблонов трассировки, которые затем могут быть использованы для последующих трассировок

Запуск и подключение к серверу

Запустить MS SQL Server Profiler можно из меню ОС Windows (меню "Пуск") или из меню программы MS SQL Server Management Studio (пункт Сервис - "SQL Server Приложение Profiler"). После запуска необходимо авторизоваться на сервере - ввести адрес сервера, имя учётной записи и пароль:

Настройка параметров трассировки

Затем перед началом трассировки необходимо задать её свойства:

  • Имя трассировки - целесообразно задавать в том случае, если её планируется сохранить
  • Использовать шаблон - определяет конфигурацию трассировки по умолчанию. А именно, он включает классы событий, которые нужно контролировать в SQL Server Profiler. Например, можно создать шаблон, указывающий используемые события, столбцы данных и фильтры.Шаблоны не выполняются, а сохраняются в файлах с расширением TDF.После сохранения шаблон управляет захватом данных, если запускается трассировка, основанная на этом шаблоне.
  • Сохранить в файл с целью повторного открытия и анализа
  • Сохранить в таблицу - в этому случае трассировка будет сохранена в БД и её можно будет анализировать средствами SQL
  • Включить время остановки трассировки - необходимо в случае длительных наблюдений

Выбор типов событий и их атрибутов

Важным шагом настройки трассировки является выбор событий (необходимо перейти на соответствующую вкладку). Вкладка "Выбор событий" содержит сетку - таблицу, которая содержит каждый из классов событий, доступных для трассировки. На каждый класс событий в таблице приходится по одной строке. Классы событий могут незначительно различаться в зависимости от типа и версии сервера, к которому они подключены. Классы событий идентифицируются в столбце События сетки и группируются по категориям событий. В оставшихся столбцах перечислены столбцы данных, которые могут быть возвращены для каждого класса событий. Чтобы включить события в трассировку, установите флажок в столбце События.

По умолчанию данный список содержит только некоторые категории и типы событий в соответствии с выбранным шаблоном (см. выше). Также отображаются не все столбцы. Для более детальной настройки рекомендуется поставить галочки "Показать все события" и "Показать все столбцы".

Если трассировка производится для отслеживания запросов, производимых приложением Lexema.ru, достаточно будет отметить 3 типа события в 2х группах:

  • Stored Procedures (хранимые процедуры)
    • RPC:Completed - происходит при завершении удалённого вызова процедуры (RPC)
    • SP:Completed - происходит при завершении хранимой процедуры
  • TSQL - отслеживание выполнения инструкций TransactSQL, передаваемых клиентами на сервер БД
    • SQL:BatchCompleted - возникает при завершении выполнения инструкции TransactSQL

Примечание : флажок в столбце Events может находится в трёх состояниях:

  • галочка отсутствует - событие не отслеживается
  • установлена чёрная галочка - выбраны все столбцы данных - для выбранного события будут собираться все возможные для него данные
  • установлена серая галочка - выбраны только некоторые столбцы данных - для выбранного события будут собираться только некоторые данные в соответствии с отметками в столбцах

По умолчанию для некоторых событий выбраны не все столбцы (стоит серая галочка). Для выбора всех столбцов необходимо снять галочку и установить её заново. При этом будут установлены галочки для всех видимых столбцов данных.

Ниже перечислены другие полезные категории и типы событий:

  • Security Audit

Настройка параметров фильтрации

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

При отслеживании событий, происходящих при использовании веб-интерфейса Lexema.ru конкретным пользователем, целесообразно установить фильтр "ApplicationName" похоже на <логин_пользователя>+&1, например, "PetrovAN&1", где PetrovAN - логин пользователя:

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

Отслеживание событий

Предположим, что после выставления настроек, описанных выше и запуска трассировки, пользователь с логином "airat" входит в систему и открывает реестр категорий доходов и расходов модуля "Домашняя бухгалтерия", а затем открывает один из документов (в качестве примера):

В результате в трассировке SQL Server Profiler будет отображён список событий:

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

exec sp_executesql N "SELECT AS , AS , AS , AS , AS , AS , AS , AS , AS , AS , AS , AS , AS , AS , AS , AS , AS FROM " , N "@PrimaryKeyBoundary bigint,@TopCount bigint" , @ PrimaryKeyBoundary = NULL , @ TopCount = NULL

Судя по названию объекта (VTransactionCategory), это запрос на выборку списка категорий транзакций. Тип данного события - RPC:Completed (завершение выполнения удалённой процедуры).

Также в списке можно видеть событий типа SQL:BatchCompleted:

Это результат выполнения запроса (QuerySource) Lexema.ru.

Для поиска в тексте запросов, отслеженных в трассировке, необходимо нажать кнопку "Найти строку" (со значком бинокля) на панели инструментов или нажать комбинацию клавиш Ctrl+F:

Затем необходимо ввести искомый текст и выбрать столбец для поиска (текст запроса содержится в столбце TextData). После нажатия на кнопку "Следующий" курсор будет позиционирован на строку события, содержащего искомый текст.

В целях тестирования и отладки данные запросы могут быть выполнены повторно вручную. Для этого необходимо скопировать их текст, открыть SQL Server Management Studio, подключиться к соответствующему серверу, выбрать БД, создать запрос, вставить его текст и выполнить.

В этой лекции мы продолжим изучение хранимых процедур, которое начали в "Создание хранимых процедур и управление этими процедурами" . Вы узнаете, как анализировать хранимые процедуры и другие операторы T- SQL с помощью анализатора запросов Microsoft SQL Server Query Analyzer и профайлера SQL Server Profiler. Из этого анализа вы сможете определять, насколько эффективны операторы T- SQL . Эффективный запрос SQL Server использует подходящую последовательность операций и подходящие индексы для снижения количества обрабатываемых строк и минимизации количества операций ввода-вывода.

Используя Query Analyzer , вы можете видеть план исполнения , выбранный для оператора T- SQL оптимизатором запросов SQL Server . Оптимизатор запросов – это внутренний модуль , который ищет наилучший план исполнения для каждого оператора T- SQL . Оптимизатор запросов анализирует каждый оператор T- SQL , просматривает ряд возможных планов исполнения и выполняет оценку "стоимости" каждого плана с точки зрения требуемых ресурсов и времени обработки. Выбирается план с наименьшей стоимостью. Стоимость каждого плана определяется на основе имеющейся статистики, которая собрана системой и может оказаться устаревшей. Поскольку вы можете знать больше о вашей базе данных и ваших данных, чем оптимизатор запросов , то, возможно, вам удастся создать план, который окажется лучше, чем у оптимизатора запросов. Используя информацию, которую выдает Query Analyzer , вы можете определить, будет ли эффективным план оптимизатора запросов для определенного оператора, и если нет, то вы можете попытаться оптимизировать данный оператор, модифицируя его или используя подсказку SQL . В этой лекции вы узнаете, как оптимизировать операторы T- SQL , что будет дополнением к изучению использования Query Analyzer .

Используя Profiler, вы можете анализировать операции внутри вашей системы SQL Server , чтобы определять, какие операторы SQL и хранимые процедуры используют излишние системные ресурсы. Обладая этой информацией, вы можете сосредоточить свои усилия по настройке в первую очередь на этих операторах и хранимых процедурах. Кроме описания того, как использовать Profiler, в этой лекции также показано, как наиболее эффективно использовать информацию, получаемую с помощью Profiler.

Использование SQL Query Аnalyzer

Утилита Query Analyzer поставляется вместе с Microsoft SQL Server 2000 взамен

В этой статье собраны несколько материалов, опубликованных в рассылке "MS SQL Server - дело тонкое…" и посвящённых проблемам мониторинга эффективности MS SQL Server, методам выяснения причин возникновения аппаратных проблем и их разрешения. Кроме того, Вашему вниманию будут предложены несколько полезных, практических рекомендаций и предостережений.

Если Ваш сервер баз данных чересчур интенсивно использует I/O, можно изменить значение параметра операционной системы I/O Page Lock Limit, который может увеличить эффективную норму чтения/записи данных операционной системой на жесткий диски.
Сначала, выполните эталонный тест I/O для вашей обычной загрузки сервера. Затем, в regedit.exe откройте ключ:

HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\IoPageLockLimit

Смысл Ваших действий состоит в пошаговом подборе значений этого ключа до наиболее оптимального, с точки зрения изменений результатов эталонного тестирования, значения.
В этом ключе операционная система считывает максимальное число байт, которые она можете использовать для операций I/O. По умолчанию установлено значение 0, которому соответствует 512КБ. Увеличивайте это значение по шагам, каждый раз прибавляя по 512КБ (например: "512", "1024", и т.д.), и выполняйте после каждого изменения эталонное тестирование вашей системы. Увеличивать этот параметр есть смысл только до тех пор, пока вы наблюдаете увеличение пропускной способности операций ввода – вывода, которое может проявляться в снижении временных затрат на стандартные дисковые операции. Когда Вы перестанете наблюдать существенное улучшение, возвратитесь в редактор реестра и уничтожьте последнее приращение.

Предостережение : Есть ограничение на максимальный размер значения этого ключа. Если Вы имеете 16 МБ ОЗУ, не устанавливайте IoPageLockLimit более 2048 байт; для 32МБ ОЗУ, не превышайте 4096 байт, и так далее.

Важное замечание:

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

Профилировщик (profiler) SQL Server 2005, отслеживание запросов приложений, шаблоны трассировки, группировка информации о запросах

Одно из самых полезных средств мониторинга активности пользователей - это профилировщик (Profiler ). При помощи этого программного средства можно узнать, какие команды в настоящее время выполняет сервер SQL Server . Необходимость в применении профилировщика возникает очень часто. Вот несколько стандартных ситуаций, когда без него обойтись бывает очень сложно:

q вы хотите проанализировать работу приложения и посмотреть, какие команды оно выполняет на сервере. Эта информация может пригодиться:

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

· чтобы выяснить, насколько оптимальные с точки зрения производительности запросы передает на сервер приложение. На практике при использовании профилировщика часто можно выявить совсем неоптимальные запросы, например, когда фильтрация или сортировка данных выполняется на клиенте;

· чтобы понять, при выполнении какой команды Transact -SQL из приложения на сервере возникает ошибка;

q для сбора информации о пользовательской активности в течение продолжительного промежутка времени (например, можно собрать все запросы, которые передавались на сервер определенным приложением в течение рабочего дня). Затем собранную информацию можно проанализировать вручную или передать программе Database Tuning Advisor для проведения автоматизированного анализа;

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

В SQL Server 2005 у профилировщика появилось много нового:

q появилась профилировка событий Integration Services . Теперь вы можете при помощи профилировщика отслеживать ход выполнения новых пакетов DTS ;

q появилась возможность при записи информации выполнения команды записывать также показания счетчиков из Системного монитора;

q в профилировщик добавлено много новых событий и источников информации, которые могут выбираться для записи в файл трассировки. Определение того, что нужно записывать в файл трассировки, теперь можно сохранять в формате XML ;

q в формате XML теперь можно сохранять и результаты трассировки (возможность записи в форматы ANSI , OEM , UNICODE также сохранена);

q в формате XML можно сохранять даже планы выполнения команд Transact -SQL , перехваченных профилировщиком. Затем эти планы можно открыть в SQL Server Management Studio для дальнейшего анализа;

q появилась возможность группировать события прямо в окне профилировщика. С помощью группировки, например, можно очень просто посчитать, сколько раз в течение дня на сервере выполнялась та или иная команда Transact -SQL .

Работа с профилировщиком выглядит очень просто. Это приложение можно запустить из меню Пуск | Программы | Microsoft SQL Server 2005 | Performance Tools | SQL Server Profiler . Для того чтобы начать работу, в открывшемся окне профилировщика в меню File (Файл) нужно выбрать New Trace (Новая трассировка) и подключиться к серверу SQL Server 2005, работу которого вы будете отслеживать. Под словом "трассировка" подразумевается сеанс сбора информации о работе SQL Server 2005. Однако перед тем, как приступать к сбору информации, нужно настроить параметры этого сеанса. Эта настройка производится в окне Trace Properties (Свойства трассировки), которое открывается автоматически перед началом сеанса трассировки (рис. 11.1).

Рис. 11.1. Настройка параметров сеанса трассировки

На вкладке General (Общие) в списке Use the template (Использовать шаблон) вы можете выбрать наиболее подходящий шаблон для сбора информации в рамках вашего сеанса. В принципе, можно и не обращать внимание на настройки шаблона, а вручную определить параметры сбора информации (при помощи соседней вкладки Events Selection (Выбор событий)). Однако указание правильного шаблона поможет сэкономить время и избежать ошибок. Поэтому на шаблонах остановимся подробнее.

Шаблон - это сохраненные в специальном файле с расширением tdf настройки сеанса трассировки. Работа с шаблонами (добавление новых, изменение существующих, импорт и экспорт отчетов в другие каталоги) производится при помощи меню File | Templates (Файл| Шаблоны) в SQL Server Profiler . Изначально в вашем распоряжении есть восемь шаблонов:

q Standard (default ) - как понятно из названия, этот шаблон подходит для большинства ситуаций и поэтому выбирается по умолчанию. Он позволяет отслеживать все запускаемые на выполнение хранимые процедуры и команды Transact -SQL ;

q SP _ Counts - собирается информация о запускаемых на выполнение хранимых процедурах и функциях. При этом информация в окне профилировщика сортируется (в терминологии профилировщика - группируется) по именам хранимых процедур;

q TSQL - собирается информация о всех командах Transact -SQL , запускаемых на выполнение на сервере. Кроме кода команд, записывается также информация об идентификаторах пользовательских процессов и времени запуска. Обычно этот шаблон используется для мониторинга команд, передаваемых на сервер приложением;

q TSQL _ Duration - почти то же самое, что и предыдущий шаблон, но вместо записи информации о времени запуска команды Transact -SQL записывается время, которое потребовалось на ее выполнение. Обычно этот шаблон используется для мониторинга производительности работы сервера "вручную";

q TSQL _ Grouped - кроме информации о коде команды Transact -SQL и времени ее запуска, записывается информация о имени приложения, учетной записи пользователя в операционной системе и логине пользователя, который был использован для подключения. При этом записи группируются по логину. Обычно этот шаблон используется в тех ситуациях, когда вы хотите отследить активность конкретного приложения;

q TSQL _ Replay - будет записываться максимально подробная информация о выполняемых командах Transact -SQL . Потом эту информацию можно использовать для того, чтобы с максимальной точностью воспроизвести нагрузку на сервер. Обычно этот шаблон применяется для записи набора команд, который будет потом использоваться для тестирования разных настроек сервера с точки зрения производительности;

q TSQL _ SPs - кроме записи информации о начале запуска всей хранимой процедуры (событие SP:Starting ), этот вариант трассировки записывает также информацию о выполнении каждой команды данной хранимой процедуры (событие SP:StmtStarting ). Такой шаблон обычно используется для мониторинга работы сложных хранимых процедур;

q Tuning - этот шаблон предназначен для записи информации, наиболее подходящей для передачи Database Tuning Advisor . Про работу с этим средством автоматизированного анализа и оптимизации производительности будет рассказано в разд. 11.5.5 .

Как уже говорилось, совсем необязательно ограничиваться только набором готовых шаблонов. Можно использовать свои параметры сеанса трассировки, настроив их на вкладке Events Selection . В таблице на этой вкладке вы должны выбрать требуемые события (в строках) и информацию (в столбцах), которая будет для них записываться. Обратите внимание, что по умолчанию видна только небольшая часть доступных строк и столбцов. Чтобы включить отображение всех строк и столбцов, нужно установить флажки Show All Events (Показать все события) и Show All Columns (Показать все столбцы).

Очень часто бывает так, что нужно отслеживать только действия, выполняемые в определенной базе данных, или определенным приложением, или определенным пользователем, или выбрать все эти условия одновременно. Фильтры на сбор информации можно настроить, нажав кнопку Column Filters (Фильтры столбцов) на вкладке Events Selection . Для каждого столбца можно настроить запись только определенных значений (Like ) или запрет записи определенных значений (Not Like ). По умолчанию настроен единственный фильтр- Not Like для столбца ApplicationName . Он заставляет игнорировать все события приложения SQL Server Profiler , т. е. все события, относящиеся к самому процессу сбора информации трассировки. Этот фильтр лучше не удалять, потому что в противном случае может возникнуть положительная обратная связь с бесконечной записью информации.

При помощи еще одной кнопки Organize Columns (Организовать столбцы), которая расположена на вкладке Events Selection , можно настроить порядок столбцов для отображения или записи в профилировщике. Обратите внимание на раздел Group (Группа) в этом списке. Для тех столбцов, которые в него помещены, будет автоматически производиться группировка. Если вы поместите в этот раздел только один столбец, то при просмотре у вас появится возможность использовать очень удобный режим Aggregated View (Агрегированное представление) (когда информация автоматически сгруппирована, например, по базе данных, по приложению, имени пользователя и т. п., и записи для нужной базы данных, приложения или пользователя можно раскрывать и сворачивать).

После того как выбран нужный шаблон или настроен свой собственный набор событий для протоколирования, вам остается вернуться на вкладку General и настроить несколько дополнительных параметров сеанса трассировки.

Информация трассировки может быть запротоколирована в файл. Этот файл можно использовать в разных ситуациях:

q можно передать в качестве источника информации Database Tuning Advisor ;

q можно "проиграть" повторно в профилировщике, повторив все записанные команды, например, для оценки производительности при разных настройках сервера;

q можно предъявить разработчикам в подтверждение своих претензий к приложению.

Отметим некоторые моменты, которые связаны с протоколированием сеанса трассировки в файл:

q 5 Мбайт, которыми ограничивается размер файла по умолчанию, это очень мало. При профилировке рабочего сервера этот размер набирается за минуты. Правда, по умолчанию установлен флажок Enable file rollover (Включить смену файлов), т. е. после заполнения одного файла автоматически будет создан второй файл, к имени которого добавится номер 1, потом - 2 и т. п., но работать с большим количеством файлов не всегда удобно. Если вы собираете информацию для передачи Database Tuning Advisor , то лучше настроить предельный размер файла в 1 Гбайт (при помощи параметра Set maximum file size (Настроить максимальный размер файла) на вкладке General ). Запись трассировки в файл чаще всего производится с рабочей станции администратора, поэтому место на диске потребуется именно на рабочей станции, а не на сервере;

q параметр Server processes trace data (Сервер обрабатывает данные трассировки) можно использовать для увеличения надежности записи информации трассировки. По умолчанию обработкой данных трассировки занимается SQL Server Profiler , и происходит это на том компьютере, на котором он запущен (не обязательно на сервере). Если установить этот флажок, то обработкой информации трассировки будет заниматься сервер. Это гарантирует, что вся информация трассировки будет собрана (при снятом флажке в моменты пиковой нагрузки сервера часть информации может быть пропущена), но увеличит нагрузку на сервер.

Другой вариант записи информации трассировки - запись в таблицу SQL Server . Таблица с нужным набором столбцов будет создана автоматически. Вы можете лишь настроить максимальное количество записей в этой таблице. Обратите внимание, что на этой вкладке максимальное количество записей указывается в тысячах.

Последний параметр на вкладке General - Enable Trace stop time (Включить время остановки трассировки). Вы можете указать время, когда трассировка будет отключена автоматически. Обычно имеет смысл отключать трассировку перед началом каких-то служебных операций, которые с точки зрения протоколирования вас не интересуют (резервное копирование, массовая загрузка данных, процессинг кубов OLAP и т. п.).

После того как все параметры трассировки будут настроены, можно нажать на кнопку Run (Запустить) на вкладке General и приступить к трассировке (рис. 11.2).

Рис. 11.2. Просмотр информации в ходе сеанса трассировки

Работа в окне просмотра информации трассировки достаточно очевидна: в верхней части показываются события, которые происходят на сервере, а в нижней части для них приводится подробная информация (например, код команд SQL ). Отметим некоторые возможности, доступные в этом окне:

q если на вкладке Organize Columns в свойствах шаблона вы выбрали столбцы для группировки, то можно сгруппировать по этим столбцам записи в окне просмотра. Для этой цели в меню View (Вид) предусмотрена команда Grouped View (Сгруппированное представление);

q если на той же вкладке в свойствах шаблона в список Group был помещен только один столбец, то можно использовать еще более удобный режим отображения Aggregated View (рис. 11.3). Этот режим включается при помощи команды Aggregated View из того же меню View и позволяет превратить значения из выбранного вами столбца в узлы дерева, которые можно сворачивать и разворачивать. Кроме того, для каждого из этих узлов автоматически подсчитывается количество событий.

Рис. 11.3. Режим отображения Aggregated View

q в профилировщике можно отобразить не только те события, которые были пойманы только что, но также сохраненные файлы и таблицы трассировки. Кроме того, вы можете открывать обычные скрипты SQL Server с командами Transact -SQL . Информация из этих файлов или таблиц может быть использована для того, чтобы повторить запротоколированные операции. Для этой цели предназначены команды меню Replay (Повторить);

q в профилировщике SQL Server 2005 появилась новая возможность - связывание информации трассировки с показателями счетчиков производительности Системного монитора. Для того чтобы воспользоваться этой возможностью, нужно:

· определить сеанс трассировки, в ходе которого обязательно должна записываться информация для столбцов StartTime и EndTime ;

· запустить сеанс трассировки с записью информации в файл или таблицу. Одновременно с ним собрать в файл протокол показаний счетчиков Performance Monitor ;

· открыть собранную информацию из файла трассировки в профилировщике, а затем воспользоваться командой Import Performance Data (Импортировать данные производительности) из меню File .

В SQL Server 2005 предусмотрен заменитель для профилировщика. Это хранимые процедуры трассировки. Их функциональные возможности практически идентичны возможностям профилировщика. Например, вы можете также выбрать события для трассировки и записать их в текстовый файл. Главное отличие заключается в том, что все настройки придется производить из кода Transact -SQL .

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

q sp_trace_create - позволяет настроить параметры сеанса трассировки;

q sp_trace_setevent - позволяет выбрать для созданного сеанса трассировки требуемые события;

q sp_trace_setfilter - позволяет настроить фильтр для сбора информации трассировки;

q sp_trace_setstatus - позволяет запустить трассировку, остановить ее или удалить созданное хранимой процедурой sp_trace_create текущее определение сеанса;

q sp_trace_generateevent - позволяет сгенерировать пользовательское событие, которое будет перехвачено в ходе трассировки.

SQL Profiler - программное средство, используемое для трассировки сервера SQL Server. "Трассировка" - сеанс сбора информации о работе SQL Server 2008

Основное назначение:

SQL Profiler используется администраторами для:

· анализа работы приложения;

· определения оптимальности запросов, направляемых на сервер;

· выявления команд Transact-SQL, при выполнении которых возникает ошибка;

· сбора информации о пользовательской активности в течение продолжительного промежутка времени;

· проведения мониторинга работы сервера в режиме реального времени.

Новые возможности:

a. профилировка Analysis Services;

b. профилировка событий Integration Services;

c. возможность при записи информации выполнения команды записывать показания счетчиков из Performance Monitor;

d. в Profiler добавлено множество новых событий и источников информации, которые могут выбираться для записи в файл трассировки;

f. возможность группировать события в окне профилировщика.

Работа с SQL Server Profiler

1. Запустить SQL Server Profiler - из меню Пускà Программыà SQL Server 2008à Performance Toolsà SQL Server Profiler .

2. В открывшемся окне в меню File выбрать New Trace и подключиться к серверу SQL Server 2008, работу которого мы будем отслеживать.

3. Настроить параметры сеанса в окне Trace Properties , которое открывается автоматически переда началом сеанса трассировки (см. рис. 8.1).

Рис. 8.1. Настройка параметров сеанса трассировки

a. На вкладке General выбрать в списке Use the template наиболее подходящий шаблон. Выбор шаблона производится при помощи меню File à Templates в SQL Server Profiler. Изначально в вашем распоряжении - восемь шаблонов:

1). Standard (default) - шаблон по умолчанию, позволяющий отслеживать все запускаемые на выполнение хранимые процедуры и команды Transact-SQL;

2). SP_Counts - сбор информации о запускаемых на выполнение хранимых процедурах и функциях с сортировкой по именам;

3). TSQL - сбор информации о всех командах Transact-SQL, запускаемых на выполнение на сервере, с указанием идентификатора пользовательских процессов и времени запуска;

4). TSQL_Duration - аналогичен предыдущему шаблону, но вместо информации о времени запуска команды TSQL записывается время, которое потребовалось на ее выполнение;

5). TSQL_Grouped - помимо информации о коде команды Transact-SQL и времени ее запуска, записывается также информация о имени приложения, учетной записи пользователя в ОС и учетной записи пользователя, которая была использована для подключения;



6). TSQL_Replay - запись максимально подробной информации о выполняемых командах Transact-SQL;

7). TSQL_SPs - помимо записи информации о начале запуска хранимой процедуры (SP:Starting) регистрируется информация о выполнении каждой из команд хранимой процедуры (SP:StmtStarting);

8). Tuning - используется для сбора информации необходимой Database Tuning Advisor.

b. На вкладке General если необходимо указать место сохраннения трассировочной информации:

1). Информация трассировки может быть запротоколирована в файл (по умолчанию размером 5 Мбайт):

· параметр Enable File Rollover определяет, будет ли при заполнении одного файла автоматически создаваться следующий. Имя следующего файла будет таким же, как и имя предыдущего, но к его имени будет добавлен номер (1, 2, 3 и т.п.)

· параметр Server processes trace data можно использовать для увеличения надежности записи информации трассировки. После установки этого флажка обработкой информации трассировки будет заниматься сервер.

2). Информация трассировки может быть сохранена в таблице SQL Server. Таблица с нужным набором столбцов будет создана автоматически.

3). С помощью параметра Enable Trace Stop Time можно указать время, когда трассировка будет отключена автоматически.

c. На вкладке Events Selection определить параметры сбора информации. В таблице на этой вкладке вы должны выбрать требуемые события (в строках) и информацию (в столбцах), которая будет для них записываться. Для отображения всех строк и столбцов, нужно установить флажки Show All Events и Show All Columns .

1). с помощью кнопки Column Filters (Фильтры столбцов) настроить фильтры на сбор необходимой информации (отслеживать действия, выполняемые в определенной БД, или определенным приложением, или определенным пользователем) – Like или Not Like ;

2). при помощи кнопки Organize Columns (Организовать столбцы) настроить порядок столбцов для отображения или записи в профилировщике с возможностью группировки данных - раздел Group.

4. После задания всех параметров трассировки нажать на кнопку Run (Запустить) (см. рис. 8.2)

Рис. 8.2. Просмотр информации в ходе сеанса трассировки

В верхней части окна отображаются события, происходящие на сервере, а в нижней части - приводится подробная информация по каждому событию (например, код команд SQL).

Возможности, доступные в окне трассировки:

1. Если на вкладке Organize Columns в свойствах шаблона вы выбрали столбцы для группировки, вы можете сгруппировать по этим столбцам записи в окне просмотра. Для этой цели в меню View предусмотрена команда Grouped View ;

2. Если в список Group был помещен только один столбец, то у вас появляется возможность использовать режим отображения Aggregated View (см. рис. 8.3). Этот режим включается при помощи команды Aggregated View из того же меню View .

Рис. 8.3. Режим отображения Aggregated View

3. Иы можете открывать в профилировщике события, сохраненные в файлах и таблицах трассировки. Также существует возможность повторять запротоколированные операции, с помощью меню Replay ;

4. Вы можете связывать информацию трассировки с показателями счетчиков производительности System Monitor. Для этого:

· определить сеанс трассировки, в ходе которого обязательно должна записываться информация для столбцов StartTime и EndTime ;

· запустить сеанс трассировки с записью информации в файл или таблицу. Одновременно с ним собрать в файл протокол показаний счетчиков Performance Monitor ;

· открыть собранную информацию из файла трассировки в профилировщике, а затем воспользоваться командой Import Performance Data из меню File .