Профілювальник (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(Файл) потрібно вибрати NewTrace(Нова трасування) і підключитися до сервера SQL Server 2005, роботу якого ви будете відслідковувати. Під словом "трасування" мається на увазі сеанс збору інформації про роботу SQL Server 2005. Однак перед тим, як приступати до збору інформації, потрібно налаштувати параметри цього сеансу. Ця установка проводиться у вікні TraceProperties(Властивості трасування), яке відкривається автоматично перед початком сеансу трасування (рис. 11.1).

Мал. 11.1.Налаштування параметрів сеансу трасування

на вкладці General(Загальні) в списку Usethetemplate(Використовувати шаблон) ви можете вибрати найбільш підходящий шаблон для збору інформації в рамках вашого сеансу. В принципі, можна і не звертати увагу на налаштування шаблону, а вручну визначити параметри збору інформації (за допомогою сусідньої вкладки EventsSelection(Вибір подій)). Однак вказівка ​​правильного шаблону допоможе заощадити час і уникнути помилок. Тому на шаблонах зупинимося докладніше.

Шаблон - це збережені в спеціальному файлі з розширенням 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.

Як вже говорилося, зовсім необов'язково обмежуватися тільки набором готових шаблонів. Можна використовувати свої параметри сеансу трасування, налаштувавши їх на вкладці EventsSelection. У таблиці на цій вкладці ви повинні вибрати необхідні події (в рядках) і інформацію (в шпальтах), яка буде для них записуватися. Зверніть увагу, що за замовчуванням видно тільки невелика частина доступних рядків і стовпців. Щоб включити відображення всіх рядків і стовпців, потрібно встановити прапорці ShowAllEvents(Показати всі події) і ShowAllColumns(Показати всі стовпці).

Дуже часто буває так, що потрібно відстежувати тільки дії, що виконуються в певній базі даних, або певним додатком, або певним користувачем, або вибрати всі ці умови одночасно. Фільтри на збір інформації можна налаштувати, натиснувши кнопку ColumnFilters(Фільтри стовпців) на вкладці EventsSelection. Для кожного стовпця можна налаштувати запис тільки певних значень ( Like) Або заборона запису певних значень ( Not Like). За замовчуванням налаштований єдиний фільтр- Not Likeдля стовпця ApplicationName. Він змушує ігнорувати всі події додатки SQL Server Profiler, т. Е. Все події, що відносяться до самого процесу збору інформації трасування. Цей фільтр краще не видаляти, тому що в іншому випадку може виникнути позитивний Зворотній зв'язокз нескінченною записом інформації.

За допомогою ще однієї кнопки OrganizeColumns(Організувати стовпці), яка розташована на вкладці EventsSelection, Можна налаштувати порядок стовпців для відображення або записи в профілювальник. Зверніть увагу на розділ Group(Група) в цьому списку. Для тих стовпців, які в нього поміщені, буде автоматично вироблятися угруповання. Якщо ви помістіть в цей розділ тільки один стовпець, то при перегляді у вас з'явиться можливість використовувати дуже зручний режим AggregatedView(Агреговане уявлення) (коли інформація автоматично згрупована, наприклад, по базі даних, за додатком, імені користувача і т. П., І записи для потрібної бази даних, додатки або користувача можна розкривати і згортати).

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

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

q можна передати в якості джерела інформації Database Tuning Advisor;

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

q можна пред'явити розробникам на підтвердження своїх претензій до додатка.

Відзначимо деякі моменти, які пов'язані з протоколированием сеансу трасування в файл:

q 5 Мбайт, якими обмежується розмір файлу за замовчуванням, це дуже мало. При профілювання робочого сервера цей розмір набирається за хвилини. Правда, за замовчуванням встановлений прапорець Enablefilerollover(Включити зміну файлів), т. Е. Після заповнення одного файлу автоматично буде створений другий файл, до імені якого додасться номер 1, потім - 2 і т. П., Але працювати з великою кількістю файлів не завжди зручно. Якщо ви збираєте інформацію для передачі Database Tuning Advisor, то краще налаштувати граничний розмір файлу в 1 Гбайт (за допомогою параметра Setmaximumfilesize(Налаштувати максимальний розмірфайлу) на вкладці General). Запис трасування в файл найчастіше проводиться з робочої станціїадміністратора, тому місце на диску потрібно саме на робочої станції, а не на сервері;

q параметр Serverprocessestracedata(Сервер обробляє дані трасування) можна використовувати для збільшення надійності запису інформації трасування. За замовчуванням обробкою даних трасування займається SQL Server Profiler, і відбувається це на тому комп'ютері, на якому він запущений (не обов'язково на сервері). Якщо встановити цей прапорець, то обробкою інформації трасування буде займатися сервер. Це гарантує, що вся інформація трасування буде зібрана (при знятому прапорці в моменти пікового навантаження сервера частина інформації може бути пропущена), але збільшить навантаження на сервер.

Інший варіант запису інформації трасування - запис в таблицю SQL Server. Таблиця з потрібним набором стовпців буде створена автоматично. Ви можете лише налаштувати максимальну кількість записів в цій таблиці. Зверніть увагу, що на цій вкладці максимальну кількість записів вказується в тисячах.

Останній параметр на вкладці General- EnableTracestoptime(Включити час зупинки трасування). Ви можете вказати час, коли трасування буде відключена автоматично. Зазвичай має сенс відключати трасування перед початком якихось службових операцій, які з точки зору протоколювання вас не цікавлять ( резервне копіювання, Масове завантаження даних, процесинг кубів OLAP і т. П.).

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

Мал. 11.2.Перегляд інформації в ході сеансу трасування

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

q якщо на вкладці OrganizeColumnsу властивостях шаблону ви вибрали стовпці для угруповання, то можна згрупувати за цими стовпцями записи в вікні перегляду. Для цієї мети в меню View(Вид) передбачена команда GroupedView(Згруповані подання);

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

Мал. 11.3.режим відображення AggregatedView

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

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

· Визначити сеанс трасування, в ході якого обов'язково повинна записуватися інформація для стовпців StartTimeі EndTime;

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

· Відкрити зібрану інформацію з файлу трасування в профілювальник, а потім скористатися командою ImportPerformanceData(Імпортувати дані продуктивності) з меню 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- дозволяє згенерувати призначене для користувача подія, яка буде перехоплено в ході трасування.

У цій лекції ми продовжимо вивчення збережених процедур, яке почали в "Створення збережених процедур і управління цими процедурами". Ви дізнаєтеся, як аналізувати збережені процедури і інші оператори 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", "1 024", і т.д.), і виконуйте після кожної зміни еталонне тестування вашої системи. Збільшувати цей параметр є сенс тільки до тих пір, поки ви спостерігаєте збільшення пропускної спроможності операцій вводу - виводу, яке може проявлятися в зниженні витрат часу на стандартні дискові операції. Коли Ви перестанете спостерігати істотне поліпшення, поверніться в редактор реєстру і знищіть останнім приріст.

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

Важливе зауваження:

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

Одним з моїх найулюбленіших інструментів є SQL Server Profiler, який часто називають просто Profiler. Ця утиліта відображає дані про будь-якій кількості деталізованих подій SQL Server. Ці події сервера можна переглядати у вікні Trace Properties (рис. 49.3), а також записувати в файл або таблицю для подальшого аналізу. Для реєстрації всіх подій або їх обраного підмножини можна встановити фільтри.

Puc. 49.2. В даному прикладі протокол лічильників буде реєструвати інформацію

про продуктивність SQL Server в каталозі С: \ Perf Logs

Утиліту SQL Server Profiler можна запустити з меню Tools програми Management Studio або безпосередньо з папки SQL Server 2005 системного меню Пуск. Для перегляду дій вам необхідно або визначити нову трасування, або скористатися вже існуючим файлом.

З виходом пакета оновлень SP1 SQL Server Profiler отримав можливість Увага! виконувати трасування великих масивів даних на великих комп'ютерах.

Крім того, раніше при моніторингу служби аналізу час відображалося в одиницях універсального синхронізованого часу (UTC). Тепер використовується локальне системний час. Раніше успішно відтворені події підраховувалися некоректно, в результаті користувач отримував некоректну статистику. Ця проблема була усунена.

Визначення нової трасування

Коли створюється нова трасування (або за допомогою команди меню File ^ New Trace, або за допомогою кнопки New Trace панелі інструментів), створюється також нове підключення до SQL Server і відкривається діалогове вікно Trace Properties (рис. 49.4). У вкладці General цього вікна налаштовується трасування (зокрема, ім'я, місце розташування файлу і т.п.), а у вкладці Events Selection визначаються реєстровані події, дані і фільтри. Якщо трасування запущена, то ці параметри можна переглядати, але не змінювати. Конфігурація трасування може бути збережена у вигляді шаблону, щоб полегшити створення нових трассіровок в майбутньому.

Мал. 49.4. Вкладка Events Selection вікна Trace Properties дозволяє відібрати події, що відслідковують утилітою Profiler

Трасування можна переглядати в реальному часі, проте ці дані можуть одночасно записуватися в файл або таблицю SQL Server. Це корисно для подальшого інтелектуального аналізу, порівняння з даними лічильників монітора системи або для імпорту в утиліту Database Engine Tuning Advisor.

Коли показання записуються в файл, для підвищення продуктивності вони об'єднуються в ланцюжки по 128 Кбайт; аналогічно, при записі в таблицю дані групуються по кілька рядків.

Щоб зберегти дані, отримані програмою Profiler, для подальшого аналізу, використовуйте високопродуктивний файловий метод, а також серверну трасування (про неї ми поговоримо пізніше). Якщо ви хочете аналізувати дані за допомогою інструкцій Т-SQL, використовуйте такий самий підхід, але після завершення сеансу трасування відкрийте отриманий файл в утиліті Profiler і виберіть в меню команду File ^ Save As ^ Table.

відбір подій

У вкладці Events Selection визначається склад дій, які виконуються сервером баз даних, які будуть реєструватися утилітою Profiler. Подібно монітора продуктивності, Profiler може відстежувати безліч ключових подій SQL Server. Для спрощення налаштування відбору можна використовувати шаблони, пропоновані за умовчанням.

I Подія SQL Batch Completed засноване на виконанні пакетів Т-SQL в

SVS цілому (розділених терминаторами пакетів), а не окремих їх інструкцій.

| * Виходячи з цього, Profiler реєструє дані всього про одну подію, незалежні

Сімо від довжини пакета. Для реєстрації виконання окремих інструкцій

DML використовуйте подія SQL Statement Complete.

Для відтворення трасування можна використовувати далеко не всі події. Наприклад, подія SQL Batch Start може бути відтворено, а подія SQL Batch Complete - немає.

Залежно від подій для трасування стають доступними різні дані. Незважаючи на те що стовпець даних SPID здається необов'язковим, це враження оманливе - він обов'язковий.

фільтрація подій

Програма Profiler здатна зібрати для вас таку кількість інформації, яка легко може в одну мить заповнити накопичувач на комп'ютері. На щастя, пропонований програмою фільтр (рис. 49.5) допоможе вам обмежити цей масив тільки цікавлять вас даними.

Мал. 49.6. Утиліта SQL Server Profiler здатна інтегрувати дані монітора продуктивності і синхронізувати їх з Відстежені подіями

Використання SQL Trace

програму SQL Profilerзазвичай використовують інтерактивно, і для непостійного збору даних її цілком достатньо. Однак тривалі трасування здатні з легкістю накопичити сотні тисяч записів, що може викликати цілком конкретні проблеми на робочій станції, яка виконує трасування. Рішення зводиться до створення журналу трасування безпосередньо на сервері. Така трасування викличе невелику додаткове навантаження на сервер; при цьому файли будуть записуватися блоками по 128 Кбайт.

У промислових системах, які здійснюють трасування на стороні сервера, запис даних в файл на сервері є найкращим способомзбору інформації

про продуктивність при мінімізації додаткового навантаження на сервер.

Трасування, виконувана на сервері, може бути визначена і реалізована за допомогою набору системних збережених процедур. Програмний код ви можете написати самостійно або за допомогою програми SQL Server Profiler.

Коли трасування налаштована і протестована в SQL Server Profiler, виберіть у меню команду File ^ Export ^ Trace Definition ^ For SQL Server 2005, щоб згенерувати сценарій T-SQL, здатний виконувати трасування на стороні сервера.

I Щоб дізнатися, які трасування запущені на сервері, виконайте запит до ди-

SVS наміческіх поданням управління systraces. Коли ви подивіться на I * результати цього запиту, то побачите додаткову трасування. Перший * номер завжди має так звана трасування за замовчуванням, яка збирає дані для журналів SQL Server, - її неможливо зупинити.

Для зупинки серверної трасування використовуйте системну збережену процедуру sp_trace_setstatus. Перший її аргумент (traceid) є ідентифікатором трасування, а другий визначає характер дії. Нульове значення параметра дії призводить до зупинки трасування, одиниця - до її запуску, а двійка - до закриття і видалення. У наступному коді зупиняється трасування з номером 2.

На додаток до використання Query Analyzer для пошуку неефективних операторів T-SQL ви можете також використовувати утиліту SQL Server Profiler. Profiler дозволяє спостерігати за всіма операторами T-SQL, які виконуються в системі, з графічним відображенням інформації про ці операторах. Profiler також надає можливості сортування та фільтрації, які можна використовувати для виявлення операторів T-SQL, що використовують основну частину ресурсів ЦП і введення-виведення. Володіючи цією інформацією, ви можете визначати, яким операторам T-SQL приділити основну увагу для їх налаштування. Оператори T-SQL, які викликаються з програми, можна переглядати в Profiler; при цьому вам не потрібно доступ вихідного кодусамого додатка.

Утиліта Profiler в SQL Server 2000 діє аналогічно утиліті Profiler в SQL Server 7, але вона містить деякі поліпшення. Одним з корисних доповнень є шаблон трасування (trace template), який можна використовувати для створення файлів трасування. (Трасування потрібно як і раніше створювати до того, як ви зможете використовувати її для моніторингу операцій SQL Server.) У SQL Server трасування повинні були створюватися вручну.

Для виклику утиліти Profiler і запуску трасування виконайте наступні кроки.

  1. Клацніть на кнопці Start, вкажіть пункт Programs, вкажіть Microsoft SQL Server, а потім оберіть Profiler. При первинному відкритті вікна Profiler воно буде порожнім. Чи не буде відкрито жодної панелі, і не буде виконуватися ніякого профілювання в SQL Server.
  2. Щоб почати створення профілювання, ви повинні вибрати для виконання існуючий шаблон трасування або створити новий шаблон трасування для виконання. (Процес запуску описаний на кроці 4.) SQL Server 2000 Profiler надає для вибору цілий ряд шаблонів трасування. Використання цих шаблонів трасування може заощадити вам багато часів, оскільки вам не потрібно створювати трасування з самого початку. Щоб побачити список шаблонів трасування, клацніть на меню File (Файл), вкажіть команду Open (Відкрити) і виберіть пункт Trace Templates (Шаблони трасування), щоб з'явилося діалогове вікно Open (рис. 35.16).


    Мал. 35.16.

    Є такі шаблони трасування, що поставляються разом з SQL Server.
    • SQLServerProfilerSP_Counts.tdf. Підраховує кількість запущених збережених процедур. Результати групуються по іменах збережених процедур і містять кількість запусків відповідної процедури.
    • SQLServerProfilerStandard.tdf. збирає загальну інформаціюпро з'єднання, виконаних збережених процедурахі пакетах SQL в порядку їх виконання.
    • SQLServerProfilerTSQL.tdf. Збирає інформацію про всіх операторів T-SQL в порядку їх надходження в SQL Server від користувачів. Ця трасування містить просто оператори T-SQL і моменти часу їх запуску.
    • SQLServerProfilerTSQL_Duration.tdf. Виводить запущені оператори T-SQL, а також час (в мілісекундах), який було потрібно для виконання цих операторів.
    • SQLServerProfilerTSQL_Grouped.tdf. Збирає дані, аналогічні тому, що збирає SQLServerProfilerTSQL, але групує оператори по користувачах, що запустив ці оператори.
    • SQLServerProfilerTSQL_Replay.tdf. Надає детальну інформацію про запускалися операторах T-SQL. Ця трасування містить дані, які можна використовувати для відтворення операторів T-SQL в Query Analyzer.
    • SQLServerProfilerTSQL_SPs.tdf.Виводить зазначені процедури, що зберігаються, а також команди T-SQL всередині цих процедур. Результати виводяться в порядку виконання.
    • SQLServerProfilerTuning.tdf. Збирає дані про збереженій процедурі і виконанні пакета SQL.
    Ці шаблони трасування можуть виявитися дуже корисними. Наприклад, шаблон трасування SQLServerProfilerTSQL_Duration може допомогти вам у визначенні операторів T-SQL, на виконання яких потрібно найбільше часу. Ця інформація може послужити відправною точкою для оптимізації запиту. Оператор може займати багато часу, тому що він виконує багато роботи або, може бути, тому, що він діє неефективно. Як ви побачите на наступному кроці, для будь-якої трасування у вас повинен використовуватися заздалегідь певний шаблон.
  3. Для запуску трасування клацніть на File, вкажіть команду New (Створити) і виберіть пункт Trace (Трасування). З'явиться діалогове вікно Connect to SQL Server (рис. 35.17). У цьому діалоговому вікні виберіть систему SQL Server для трасування і потім клацніть на кнопці OK.


    Мал. 35.17.
  4. З'явиться вікно Trace Properties (Властивості трасування) (рис. 35.18). У вкладці General (Загальні) ви можете ввести ім'я трасування (поле Trace name) і вибрати шаблон трасування (trace template), щоб використовувати його як відправну точку. для даного прикладувиберіть шаблон SQLServerProfilerTSQLDuration. У нижній частині вкладки ви можете вказати, де хочете зберігати трасування - в файлі (Save in file) і / або в таблиці SQL Server (Save in table). Якщо не встановлено жодного з цих прапорців, то результати трасування будуть виводитися тільки на екран. Крім того, ви можете задати час закінчення трасування (прапорець і поле Enable trace stop time). Це може виявитися дуже корисним для довготривалих трассіровок.


    Мал. 35.18.
  5. Далі клацніть на вкладці Events (Події) (рис. 35.19).


    Мал. 35.19.У цій вкладці ви можете вибрати одне або кілька подій, які будуть відстежуватися в даній трасування. Можна відстежувати цілий ряд класів (категорій) подій і конкретних подій. У вікні списку Available event classes (Наявні класи подій) містяться такі класи подій, як Cursors (Курсори), Errors and Warnings (Помилки і попередження), Locks (Блокування), Objects (Об'єкти), Scans (Сканування), SQL Operators (Оператори SQL), Stored Procedures (Збережені процедури), Transactions (Транзакції) і TSQL.
  6. Після вибору подій, трасування яких ви хочете виконувати, клацніть на вкладці Data Columns (Колонки даних) (рис. 35.20). У цій вкладці вкажіть, збір яких даних буде виконуватися під час даної трасування. У ці дані можна включати час закінчення,