База даних для моніторингу продуктивності Microsoft SQL Server:
Для розвитку рішення надсилайте ([email protected]) власні методики по аналізу і оптимізації продуктивності і способи застосування даного рішення на практиці.
Оптимізація роботи сервера
, бази даних і виконання запитів - це складна і трудомістка робота, яка повинна виконуватися постійно.
Це область, в якій тісно переплітаються області компетенцій і відповідальності адміністратора і розробника баз даних. Найчастіше тільки їх спільна робота дозволяє домогтися результату.
В першу чергу, необхідно визначити пріоритети і цільові показники в роботі бази даних: будь-яка оптимізація є односторонньою, і дозволяє посилити певної аспект роботи системи за рахунок деградації інших аспектів і ускладнення самої системи.
Якщо ми будемо займатися «точкової» оптимізацією, тобто не аналізуватимемо роботу сервера бази даних в цілому, то можемо отримати ситуацію, коли при оптимізації одного завдання у нас знижується рівень продуктивності для інших завдань.
Очевидним показником продуктивності є час виконання запиту. Але це, насправді, умовний критерій, оскільки на нього впливають безліч чинників, які складно контролювати. Простим і об'єктивним показником є те, яка робота виконується системою при виконанні запиту: перш за все обсяг оброблених даних (введення-виведення). І основним завданням оптимізації є саме мінімізація навантаження на систему і її балансування - рівномірне навантаження на апаратні ресурси.
Часто проблеми з продуктивністю мають ефект «доміно» - важливо знайти першопричину і усунути саме її, а не симптоми.
Microsoft SQL Server має безліч засобів діагностики , Які можуть генерувати великі обсяги інформації. За допомогою динамічних адміністративних об'єктів (DMV / DMF) можна досить просто отримати картинку в цілому, або дуже детальну, що стосується конкретного запиту або об'єкта бази даних.
Складність полягає в тому, що неможливо тільки за одним показником зробити достовірну оцінку і виробити ефективне рішення проблеми: необхідно постійно відстежувати взаємний вплив різних зовнішніх і внутрішніх факторів продуктивності.
Також важливо розуміти, що кожен екземпляр СУБД має свої особливості по конфігурації і навантаженні, і простий перенесення успішних практик з однієї системи на іншу не дає гарантованого результату.
Для цього ми створюємо службову базу даних, в якій накопичуємо фактичні і статистичні дані про роботу нашої системи, і також зберігаємо наші практики з діагностики та оптимізації у вигляді уявлень і збережених процедур.
На основі професійних знань спільноти, доступних на форумах, блогах і в фаховій літературі, я розробляю рішення для вивчення зміни і навантаження на Microsoft SQL Server (Database Engine). Це рішення реалізовано у вигляді бази даних, що містить в собі таблиці, запити та збережені процедури для збору і зберігання діагностичної інформації (див. Наступний малюнок), а також засоби для виявлення і вирішення стандартних проблем.
Також це рішення використовується для навчання, тому в ньому є дані, що представляють знання про Microsoft SQL Server в формалізованому вигляді. Ці знання допомагають отримувати більше «багате» уявлення про нашу систему, пов'язуючи між собою окремі показники і формуючи критерії для їх якісної оцінки.
Розробляється спеціалізований додаток для візуалізації діагностичних даних.
На основі формалізованих знань забезпечується їх інтелектуальний аналіз і пояснення отриманої інформації.
Це рішення має відкриту архітектуру і дозволяє додавати нові методи по діагностиці та налаштування роботи СУБД.
Дорожня карта
вебінар Архітектура і продуктивність Microsoft SQL Server
Бібліографія
- SQL Server Performance Survival Guide
- Expert performance indexing for SQL Server 2012. Jason Strate, Ted Krueger.
- Inside the SQL Server Query Optimizer. Benjamin Nevarez.
- Microsoft SQL Server 2012 Performance Tuning Cookbook. Ritesh Shah, Bihag Thaker.
- Optimizing Fill-factors for SQL Server. Ken Lassesen.
- Performance Tuning with SQL Server Dynamic Management Views. Louis Davidson, Tim Ford.
- Plan Caching and Recompilation in SQL Server 2012. Greg Low.
- Pro SQL Server internals. Dmitri Korotkevitch
- Pro SQL Server Wait Statistics. Enrico van de Laar.
- SQL Server DMVs in Action. Better queries with dynamic management views. Ian W. Stirk.
- SQL Server Statistics. Holger Schmeling.
- SQL Server Query Performance Tuning. Grant Fritchey.
- SQL Server Concurrency. Locking, Blocking and Row Versioning. Kalen Delaney.