Створення базового моніторингу продуктивності SQL Server

Для того, щоб отримати огляд і порівнянні дані, моє поточне завдання полягає у створенні базового рівня продуктивності, щоб отримати деякі дані про різні продуктивні екземпляри SQL Server.

Мої думки такі:

  • Я хочу використовувати кілька DMV
  • Я хочу включити трасування профайлера (в т.ч. Exec. plan)
  • Я хочу включити дані perfmon

Отже, що я намагаюся досягти, це загальний моніторинг продуктивності, що стартує і зупиняється (також схематичний), який повертає:

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

  2. Кілька агрегованих, простих цифр, які допомагають візуалізувати довгостроковий прогрес .. esp. для управління ;-)

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

Я знайшов пару відомостей, що описують створення базових показників ефективності. Більшість з них або дуже складні, або зосереджені лише на одному з бажаних показників ефективності (в основному перфоментні дані).

The most matching sample/description was the following: Creating a Performance Baseline for SQL Server

Питання:

Хто-небудь має досвід створення такого роду монітор продуктивності в швидко здійсненний спосіб?

7
Ви також можете розглянути інструмент третьої сторони, який робить baselining (і багато чого на вершині цього). Ви пропонуєте повторно винаходити багато роботи, яку вже зробили інші. Ні, вони не вільні, але і ваш час (і керівництво добре знатиме про це).
додано Автор Aditya Chawla, джерело
Перейдіть на сторінку SQLSentry . Я використовував його у своїй попередній роботі і його відмінний інструмент + мають відмінну підтримку і люди в спільноті, як @AaronBertrand :-)
додано Автор Kin, джерело
Я думаю, що коротка відповідь: Ні. Ви повинні взяти час, щоб накреслити, що вам потрібно для базової продуктивності. Виходячи з цієї оцінки, потрібно зібрати запити, щоб зібрати інформацію та створити об'єкти db для зберігання інформації. Окрім пропозицій @ Shanky, ви також можете скористатися додано Автор Peter Bucher, джерело
Привіт Аарон, будь ласка, надайте інструмент третьої сторони, який робить це
додано Автор TheGameiswar, джерело
Трохи інформації, яку ви можете отримати в Brent Ozar Sp_Blitz ще кілька посилань на посилання Тут і Тут
додано Автор Shanky, джерело

6 Відповіді

Більше року я хочу повідомити кожному про свій досвід і кінцевий результат цього питання/теми.

Я почав створювати власні речі. Спочатку я дотримувалася статті Зібрати та зберегти історичні дані лічильника продуктивності SQL Server з CMVs Тимом Фордом, щоб отримати щось та розширити це з будь-якими даними, які я хотів зібрати. Так колись на день я запускаю кілька збережених процедур на кожному сервері SQL, які збирають певну інформацію з DMV і зберігають результати на локальному сервері всередині бази даних. Це включає в себе використання індексу, відсутні індекси, конкретні записи журналу, такі як autogrow, параметри сервера, параметри бази даних додатків, фрагментація, виконання завдань, інформація журналу транзакцій, інформація про файл, статистику очікування тощо.

Окрім того, я додав до цього репозитарію результати регулярного виконання Brent Ozar для збирання додаткових цінних показників для роботи, вдосконалення та звітування.

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

Потім я створив аркуші Excel, а також звіти, що використовують служби звітів для аналізу та інтерпретації. Деякі зразки:

enter image description here enter image description here enter image description here

Також я налаштував деякі показники лічильників продуктивності, використовуючи TYPEPERF, натхненний статтею " Збір даних про продуктивність в таблицю SQL Server " Федор Георгієв.

З мого прикладу моніторингу SQL я запускаю typeperf для запуску і збираю налаштовувану кількість зразків з конфігурованим зразком інтервалу і зберігаю результати в моєму центральному моніторинговому db.

Це дозволяє спостерігати за довгостроковими показниками продуктивності, приклад:

enter image description here

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

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

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

Все це змусило мене доручити керівництву витрачати кошти на професійне рішення, яке я не можу створити самостійно.

Останній вибір полягав у тому, щоб купити SentryOne, тому що в порівнянні з іншими, це переконливо і доставляє багато інформації, необхідної для ідентифікації наших точок болю.

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

Я сподіваюся, що ви знайдете це корисним, як тільки ви потрапили в цю тему питання.

EDIT April 20, 2017: Brent Ozar recently posted the following article on facebook that is kind of a simiar approach taken by the SQL Tiger Team: https://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-baselining-reports-unleashed-for-enterprise-monitoring/

7
додано
Я радий, що ви прийшли до такого ж висновку, і ви абсолютно правильно, ваш час набагато краще витрачається на фіксацію ваших реальних проблем, замість того, щоб повторно винаходити колесо. Ваше колесо здається особливо блискучим, хоча: D
додано Автор corwin_, джерело

Ось деякі хороші статті з практичними прикладами, які можна знайти тут:

Як виявити SQL Проблеми з продуктивністю сервера, використовуючи базові лінії - Частина 1 - Вступ

Як виявити проблеми з продуктивністю SQL Server, використовуючи базові лінії - Частина 2 - Збір показників і звітів

Як виявити продуктивність SQL Server проблеми з використанням базових рівнів - Частина 3

Хоча частина 1 надасть вам деякі базові знання про те, що є базовим сценарієм, у частині 2 можна знайти інформацію про те, як це зробити самостійно, використовуючи метод "поганий чоловік" (це безкоштовний і корисний для навчання)

У Частині 3 наведено приклади того, як можна встановити базові лінії та як використовувати базові лінії для усунення неполадок за допомогою ApexSQL Monitor

6
додано

Як досить недавно викарбований DBA під пістолетом, я запустив гамму безкоштовних інструментів і зробив деякі експерименти в платному просторі (DPA, SQL Sentry і Foglight), і це дійсно залежить від того, для чого ви хочете інструмент.

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

Ви можете абсолютно створити свої навички, перейшовши безкоштовний маршрут, і інструменти для SQL Server великі.

З цими та деякими додатковими базами даних/таблицями та робочими місцями та часом ви можете побудувати базову систему моніторингу (але це не дуже), це інструменти для адміністраторів баз даних; якщо ви не маєте хороших результатів у роботі з інформаційними технологіями, ви будете боротися за те, щоб знайти час для створення корисної для бізнесу дружньої справи, незважаючи на те, що програма Ozar sp_blitz досить гарна.

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

Після демонстрації раніше згаданих клієнтів, я вибрав DPA, оскільки керівництво може легко споживати результати, хоча я, безумовно, маю клієнтські ліцензії на SQL Sentry Plan Explorer Pro (1000% коштує грошей) і дуже сподобався, використовуючи серверну версію. так само.

Я також спробував отримати SQLNexus працює в одній точці, але я в кінцевому підсумку працювати багато, ніж я був зацікавлений, це може відповідати вашим потребам.

3
додано

Щоб швидко створити базовий рівень продуктивності, щоб отримати деякі дані про різні продуктивні SQL-екземпляри, я б використав безкоштовну пробну версію інструменту третьої сторони, наприклад, Solarwinds Database Performance Analyzer.

1
додано

Read this book!!! SQL Server Tacklebox

Він показує, як використовувати SSIS і TSQL-запити для збору інформації про моніторинг на всіх екземплярах SQL Server у вашому середовищі.

1
додано

Я слідував подібний маршрут до деяких з вищезазначених плакатів, але потім натрапив на щось створене Microsoft.

It was mentioned above briefly, but no explicit link was given. The Microsoft Tiger Team developed the 'Tiger Toolbix' which is downloadable from here: https://github.com/Microsoft/tigertoolbox

A Youtube video explains the Tiger Toolbox: https://www.youtube.com/watch?v=bx_NGNEz94k

There is also https://github.com/sqlcollaborative/dbareports

0
додано