Контакти

Моніторинг ефективності MS SQL Server. Практичні рекомендації. SQL Profiler вирішує проблеми

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

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

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

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

У попередніх випусках (див. КомпьютерПресс № 1, 3-5, 7, 9'2006) ми розглянули питання, що стосуються переходу на SQL Server 2005 шляхом міграції або поновлення, а також основних сценаріїв використання SQL Server 2005. У цій статті мова піде про різних методах оптимізації запитів і про можливі підходи до вирішення завдань, пов'язаних з пошуком проблем продуктивності.

SQL Server надає сервіси, які виконуються в динамічної, постійно мінливому середовищі. Тому регулярний моніторинг роботи сервера дозволяє визначати проблеми ще на етапі їх виникнення та оперативно вживати заходів щодо їх усунення. З накопиченням статистики з'являється розуміння основних тенденцій роботи сервера. Регулярний збір даних - навіть в тих випадках, коли сервер працює без будь-яких проблем, - дозволить створити так званий базовий критерій продуктивності (server performance baseline), який може служити як еталон при подальших вимірах роботи сервера.

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

Базовий еталон може використовуватися для визначення часу пікового завантаження сервера і часу його простою (peak і off-peak hours), часу відгуку запитів і пакетів команд, часу виконання процедур створення резервних копій і відновлення даних і т.п.

продуктивність запитів

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

До складу SQL Server 2005 входять два основних засоби для вимірювання продуктивності запитів - Performance Monitor і SQL Server Profiler. Крім цього для отримання інформації про виконання запитів можна використовувати конструкції мови T-SQL з групи SET STATISTICS - SET STATISTICS IO, SET STATISTICS PROFILE і SET STATISTICS TIME - і динамічні уявлення (Dynamic Management Views). Далі ми розглянемо застосування Performance Monitor і SQL Server Profiler більш докладно.

Використання Performance Monitor

Утиліта Performance Monitor застосовується для аналізу продуктивності апаратних і програмних ресурсів, включаючи пам'ять, використання мережі, час роботи процесора, а також інформацію, що відноситься до роботі SQL Server і інших програмних продуктів - Microsoft Message Queuing (MSMQ), Microsoft. NET Framework і Microsoft Exchange Server. Зокрема, можна застосовувати Performance Monitor для моніторингу таких ресурсів SQL Server, як блокування і транзакції.

Для додавання цікавлять нас лічильників необхідно виконати наступні дії:

  1. В меню Start вибрати команду Run і в діалогової панелі Run ввести perfmon. В результаті буде запущена консоль Performance Microsoft Management Console (MMC), що відображає графічне представлення ряду лічильників продуктивності.
  2. У вікні System Monitor натиснути праву кнопку на графіку і вибрати команду Add Counters.
  3. У діалогової панелі Add Counters вибрати цікавий для нас комп'ютер і об'єкт для моніторингу. Об'єкти, що відносяться до SQL Server, мають відповідний префікс.
  4. Для вибору лічильників необхідно вибрати або опцію All counters, Або один або кілька лічильників із списку (рис. 1).
  1. Після цього слід вибрати екземпляри бази даних або включити опцію All Instances.
  2. Натискання кнопок Add і Close завершує додавання лічильників.

Після того як питання, що цікавлять нас лічильники додані, ми можемо або переглядати їх значення у вигляді графіка, або зберігати їх в trace-файлі (рис. 2).

В останньому випадку необхідно розкрити елемент Performance Logs and Alerts і клацнути по команді New Log Settings. У діалогової панелі New Log Settings необхідно задати ім'я протоколу і натиснути кнопку OK. Далі в діалогової панелі CounterLogName ми вибираємо команду Add Counters. Додавання цікавлять нас лічильників відбувається так само, як було описано вище. Зверніть увагу на те, що велика кількість лічильників може вплинути на продуктивність системи. По завершенні додавання лічильників натисніть кнопку Close.

на вкладці General в розділі Sample data every можна задати частоту семплінгу (зняття даних). Рекомендується почати з середньої частоти, наприклад раз в 5 хв, а потім, при необхідності, зменшити або збільшити її. Зверніть увагу на те, що чим коротше інтервал семплінгу, тим більше потрібно системних і дискових ресурсів. Необхідно пам'ятати, що інтервали коротше, ніж період квантування лічильника, також можуть привести до невірного відображення даних. на вкладці Log Files можна конфігурувати властивості файлу-протоколу, а на Schedule задається розклад моніторингу. Натискання кнопки OK призводить до створення протоколу на початок збору даних (рис. 3).

Для ручного завершення протоколювання потрібно натиснути правою кнопкою на елементі Counter Logs і вибрати команду Stop.

Для перегляду зібраних в файлі протоколу даних в Performance Monitor потрібно вибрати елемент System Monitor, В панелі завдань - команду View Log Data, А в діалогової панелі System Monitor Properties на вкладці Source вказати ім'я файлу протоколу.

Найбільш часто застосовуються лічильники Performance Monitor, інформацію з яких можна використовувати для визначення проблем, пов'язаних з продуктивністю, розділені на наступні категорії:

  • доступ до даних - для аудиту методів доступу до даних, що застосовуються самим SQL Server, використовується об'єкт SQLServer: Access Methods;
  • статистика - для моніторингу компіляції і рекомпіляції запитів застосовується об'єкт SQLServer: SQL Statistics. Він надає інформацію про те, як швидко і ефективно SQL Server обробляє запити;
  • транзакції - для визначення числа транзакцій в секунду використовуються лічильники, які стосуються об'єктах SQLServer: Databases і SQLServer: Transactions;
  • блокування - для аудиту блокувань SQL Server, що встановлюються на певні типи ресурсів, застосовується об'єкт SQLServer: Locks (Табл. 1).

Таблиця 1. Лічильники SQL Server Profiler

Назва лічильника

опис

Підраховує число сканувань діапазонів (range scans) для індексів в секунду

Підраховує число повних сканувань, виконаних за останню секунду

Index Searches / sec

Підраховує число пошуків за індексом за останню секунду

Table Lock Escalations / sec

Підраховує число блокувань для таблиці

Worktables Created / sec

Підраховує число робочих таблиць, створених за останню секунду

Batch Requests / sec

Підраховує число пакетів команд Transact-SQL в секунду. Велике число пакетів означає хорошу пропускну здатність

SQL Compilations / sec

Підраховує число компіляцій запитів в секунду. Значення цього лічильника повинно стати практично постійним після виконання користувачем основних дій

SQL Re-Compilations / sec

Підраховує число рекомпіляції запитів в секунду

Об'єкт SQLServer: Databases. Лічильник Transactions / sec

Підраховує число транзакцій, запущених в базі даних за останню секунду

Об'єкт SQLServer: Transactions. Лічильник Longest Transaction Running Time

Обчислює число секунд з початку транзакції, яка була активна довше, ніж будь-яка інша поточна транзакція. Якщо цей лічильник показує дуже довгу транзакцію, використовуйте системну збережену процедуру sys.dm_tran_active_transactions () для отримання інформації про дану транзакції

Об'єкт SQLServer: Transactions. Лічильник Update conflict ratio

Підраховує відсоток транзакцій, які застосовують ізоляцію образів (snapshot isolation) для вирішення виникаючих конфліктів при оновленні даних за останню секунду

Average Wait Time (ms)

Підраховує середній час очікування для кожного запиту на блокування, що викликав очікування

Lock Requests / sec

Підраховує число блокувань і перетворень блокувань в секунду

Lock Wait Time (ms)

Підраховує сумарну очікування для блокувань за останню секунду

Підраховує число запитів на блокування в секунду, які привели до очікування

Друга утиліта, якою можна скористатися для вимірювання продуктивності запитів, - це SQL Server Profiler. Далі ми розглянемо основні способи її використання.

Використання SQL Server Profiler

Утиліта SQL Server Profiler служить для вимірювання продуктивності окремих запитів і запитів, що входять до складу процедур і пакетів команд на мові Transact-SQL. З її допомогою можна збирати інформацію про продуктивність, включаючи час, витрачений на виконання окремої команди, час блокування для виконання команди, а також план виконання (execution plan).

Щоб створити новий режим необхідно виконати ряд наступних кроків:

  1. Запустити SQL Server Profiler ( Microsoft SQL Server 2005 \u003d\u003e Performance Tools \u003d\u003e SQL Server Profiler).
  2. В меню File вибрати команду New Trace.
  3. У діалогової панелі Connect to Server вибрати необхідний сервер і натиснути кнопку Connect.
  4. У діалогової панелі Trace Properties потрібно задати ім'я профілю (Trace name), А в списку Use the template вибрати один з доступних шаблонів або Blank, Якщо шаблон не використовується.
  5. Для збереження результатів профілювання необхідно вибрати опцію Save to file для запису даних в файл і вказати максимальний розмір файлу (значення за замовчуванням - 5 Мбайт), опціонально можна включити опцію Enable file rollover для автоматичного створення нового файлу після досягнення зазначеного розміру профілю. Друга можливість - збереження даних у таблиці бази даних (Save to table) - опція Set maximum rows дозволяє задати максимальну кількість записів.
  6. Щоб встановити період завершення трасування можна використовувати опцію Enable trace stop time (Рис. 4).

Для завдання подій і колонок даних для профілю потрібно виконати наступні кроки:

  1. У діалогової панелі Trace Properties перейти на вкладку Events Selection.
  2. Додати або видалити події з профілю, використовуючи таблицю класів подій.
  3. Для отримання списку всіх доступних подій включите опцію Show all events (Рис. 5).

У табл. 2 перераховані найбільш часто використовувані події SQL Server Profiler. Як і лічильники продуктивності, події SQL Server Profiler поділяються на ряд категорій, причому деякі з них представляють інтерес для вирішення наших завдань.

Таблиця 2. Події SQL Server Profiler

Назва події

опис

Дана подія відбувається по завершенні виконання виклику віддаленої процедури

Дана подія здійснюється після закінчення виконання процедури

SP: StmtCompleted

Дана подія відбувається по завершенні виконання однієї з команд мови Transact-SQL всередині процедури,

SQL: StmtCompleted

Дана подія здійснюється після закінчення виконання команди на мові Transact-SQL

SQL: BatchCompleted

Дана подія відбувається по завершенні виконання пакету команд на мові Transact-SQL

Дана подія виконується, коли транзакція отримує блокування на якийсь ресурс

Дана подія відбувається, коли транзакція звільняє раніше заблокований ресурс

Дана подія здійснюється при перевищенні часу очікування на отримання блокування, так як необхідний ресурс вже заблокований інший транзакцією

Як визначити наявність блокувань

Кожен раз, коли в транзакції застосовується якийсь ресурс (таблиця, сторінка, індекс і т.п.), для нього встановлюється блокування. Якщо інша транзакція намагається звернутися до цього ресурсу і тип блокування несумісний з уже увімкненим блокуванням, виникає нова блокування.

Для визначення наявності блокувань можна застосовувати такі способи:

  • використовувати утиліту SQL Server Management Studio Activity Monitor, яка показує інформацію про процеси, блокування на рівні процесу та на рівні об'єкта. Для доступу до Activity Monitor в SQL Server Management Studio потрібно вибрати елемент Management, А в ньому - Activity Monitor і двічі клацнути по цьому елементу. Activity Monitor дозволяє переглядати:

Заблоковані об'єкти для кожного процесу - для визначення запиту, що призвів до появи блокування, застосовуйте ідентифікатор процесу Server Process ID (SPID) на сторінці Process Info,

Процеси, що змушують інші процеси перебувати в стані очікування, - для виявлення таких процесів скористайтеся колонкою Blocked By на сторінці Process Info (Рис. 6);

  • застосовувати SQL Server Profiler для отримання звіту про заблокованих процесах - в цьому списку відображається інформація про процеси, які залишалися заблокованими довше зазначеного временн про

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.

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

У своїй роботі ми досить часто стикаємося з ситуацією, коли певний запит працює повільно, причому за текстом запиту невидно ніяких очевидних проблем. Зазвичай в цьому випадку необхідно розслідувати проблему на більш глибокому рівні. Як правило, виникає необхідність подивитися текст SQLзапроса і його план, і ось в цьому нам якраз допомагає SQLProfiler.

Що таке SQL Profiler і навіщо воно взагалі потрібне

SQLProfilerето програма поставляється разом з MS SQL Server і призначена вона для і перегляду всіх подій, які відбуваються в SQL сервер або кажучи іншими словами для запису трасування. Навіщо SQLProfiler може знадобитися програмісту 1С? Хоча б для того, що б отримати текст запиту на мові SQL і подивитися його план. Звичайно, це можна зробити і за допомогою технологічного журналу, але це вимагає деяких навичок, та й план в ТЖ виходить не такий красивий і легкий для читання. У профайлером можна подивитися не тільки текстовий, а й графічний план виконання запиту, що на мій погляд, набагато зручніше. Так само за допомогою профайлера можна визначити: запити довше визначеного часу запити до певної таблиці очікування на блокування таймаут взаимоблокировки і багато іншого ...

Аналіз запитів за допомогою SQL Profiler

Найбільш часто профайлер використовується саме для аналізу запитів. Як правило, нам не потрібно відстежувати всі запити, часто необхідно побачити, як певний запит на мові 1С транслюється в SQL, і подивитися план його виконання. Наприклад, це може знадобитися, щоб визначити, чому запит виконується повільно або ми написали великий запит і хочемо переконатися, що текст запиту на мові SQL не містить сполук з підзапитом. Що б відловити запит в трасуванні робимо наступне:

1. Запускаємо SQL Profiler Пуск - Всі програми - Microsoft SQL Server 2008 R2 - Засоби забезпечення продуктивності - SQLProfiler
2. Створюємо нову трасування Файл - Створити трасування (Ctrl + N)
3. Вказуємо сервер СУБД на якому знаходиться наша база даних і натискаємо «З'єднати».

Природно, нічого не заважає виконувати трасування сервера СУБД, який знаходиться на іншому комп'ютері. 4. У вікні «Властивості трасування» переходимо на другу закладку «Вибір подій»

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


Опис подій: ShowplanStatisticsProfile- текстовий план виконання запиту.
ShowplanXMLStatisticsProfile- графічний план виконання запиту.
RPC: Completed- текст запиту, якщо він виконується як процедура (якщо виконується запит 1С з параметрами).
SQL: BatchCompleted- текст запиту, якщо він виконується як звичайний запит (якщо виконувався запит 1С без параметрів).

6. Тепер необхідно налаштувати фільтр для подій. Якщо цього не зробити, то ми будемо бачити запити для всіх баз даних розташованих на даному сервері СУБД. Натискаємо кнопку «Фільтри стовпців» і вказуємо фільтр по імені бази даних

Тепер ми будемо бачити в трасуванні тільки запити до бази даних «TestBase_8_2» При бажанні можна поставити фільтр і по інших полях, найбільш цікаві з них: Duration (Тривалість), TextData (зазвичай це текст запиту) і RowCounts (кількість рядків, що повертаються запитом).

Наприклад, якщо мені потрібно відловити всі запити до таблиці «_InfoRg4312» тривалістю більше 3-х секунд в базі даних «TestBase_8_2», то я роблю:
a) Фільтр по базі даних, приклад показаний вище
b) Фільтр по тривалості в мілісекундах.

C) Фільтр по тексту запиту


Тут ми вказуємо маску. Якщо необхідно відстежувати запити, які звертаються до декількох таблиць, то створюємо кілька елементів в розділі «Схоже на». Умови всіх фільтрів працюють разом.

7. Тепер можна запускати трасування. Натискаємо «Запустити», після цього трасування починає роботу, і ви можете бачити ті події, відображення яких ви набудували і які потрапляють під ваші фільтри. Для управління трасуванням можна використовувати кнопки на командній панелі.


Зліва на право: Ластик - очищає вікно трасування, Пуск - запускає трасування, Пауза - ставить трасування на паузу, при натисканні на Пуск трасування поновлюється, Стоп - зупиняє трасування

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

9. Виконаємо запит в консолі запитів 1С і подивимося як він відіб'ється в профайлером.


За трассировке видно, що запитів вийшло кілька і тільки один з них наш. Інші запити є службовими.

10. За властивостями подій можна зрозуміти: скільки секунд виконувався запит (Duration), скільки було логічних читань (Reads), скільки рядків запит повернув в результаті (RowCounts) і т.д. У моєму випадку запит виконувався 2 мілісекунди, зробив 4 логічних читання і повернув 1 рядок.

11. Якщо піднятися на одну подію вище, то ми зможемо побачити план запиту в графічному вигляді.
Як видно з плану, пошук здійснюється за індексом за ціною, хоча цей план не можна назвати ідеальним, тому що індекс не є покриває, поля код і найменування виходять за допомогою KeyLookup, що забирає 50% часу.


Використовуючи контекстне меню, графічний план можна зберегти в окремий файл з розширенням * .SQLPlan і відкрити його в профайлером на іншому комп'ютері або за допомогою більш просунутою програми SQL Sentry Plan Explorer.

12. Якщо піднятися ще вище, то ми побачимо той же план запиту, але вже в текстовому вигляді. Саме цей план відображається в ТЖ, ЦУП і інших засобах контролю продуктивності 1С. Для його аналізу рекомендую використовувати просунутий текстовий редактор з підсвічуванням, наприклад Notepad ++.

13. Використовую меню «Файл-Зберегти як», всю трасування можна зберегти в різні формати:
a) У формат самого профайлера, тобто з розширенням * .trc
b) У формат xml
c) Можна зробити з трасування шаблон. Див. Наступний пункт.
d) Можна зберегти трасування у вигляді таблиці бази даних. Зручний спосіб, якщо нам потрібно знайти наприклад самий повільний запит у всій трасування або відібрати запити по якомусь параметру. Файл - Зберегти як - Таблиця трасування - Вибираємо сервер СУБД і підключаємося до нього Далі потрібно вибрати базу даних на зазначеному сервері і вказати ім'я таблиці, куди буде збережена трасування. Можна вибрати вже існуючу таблицю, Або написати нове ім'я і тоді таблиця буде створена автоматично в обраній базі даних.

При цьому потрібно враховувати, що Duration зберігається в таблицю в мільйонних частках секунди і при виведенні результату, бажано переводити значення в мілісекунди. Так само в таблицю додається стовпець RowNumber, який показує номер цього рядка в трасуванні.

14. Якщо вам потрібно часто використовувати профайлер для аналізу запитів, то установити правильні фільтрів і подій швидко набридне і до того ж буде забирати багато часу. На допомогу приходять шаблони трассіровок, де ми вказуємо потрібні нам фільтри і порядок колонок, а далі просто вибираємо цей шаблон при створенні нової трасування. Для створення шаблону використовуємо меню Файл - Шаблони - Новий шаблон

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

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

Звичайно, тут показані далеко не всі способи використання цього чудового інструменту, якщо буде інтерес аудиторії то в майбутньому можна буде поповнити колекцію статей на цю тему.



Сподобалася стаття? поділіться їй