Регламентні роботи на сервері ms sql server

Робота встановленого сервера баз даних MS SQL Server багато в чому залежить від того, наскільки грамотно і регулярно проводяться на ньому регламентні завдання і процедури. Від виконання цих робіт залежить стабільність і продуктивність роботи баз даних. Регулярне виконання регламентних робіт входить в Обслуговування сервера MS SQL Server.
Виконання регламентних робіт проводяться штатними засобами самого сервера SQL без необхідності писати спеціальні скрипти, хоча і не виключає їх використання. Питання зводиться до грамотного підходу в налаштуванні і використанні цих коштів. Обслуговування має бути максимально непомітним для користувачів, оптимальний час виконання - це нічний час.
Основні регламентні роботи на сервері MS SQL:
Призначення і періодичність регламентних процедур
Перевірка цілісності бази даних
Будь-які регламентні роботи має сенс тільки з "здорової" базою даних, а для цього необхідно для перевірки розміщення і структурної цілісності таблиць і індексів попередньо провести Перевірку цілісності бази даних.
Час виконання. безпосередньо перед виконанням основних регламентних операцій, тобто не рідше 1 разу на добу.
оновлення статистики
Спираючись на статистичні дані, SQL-сервер підбирає оптимальний план запитів. Однак дані статистики не завжди виявляються актуальними на необхідний момент.
Рекомендований період. не рідше 1 разу на добу.
Очищення процедурного кешу
Для забезпечення кращої продуктивності системи при обробці запиту кешує дані плану запиту, на випадок якщо такий запит повториться, а план його відомий. Але іноді це може і перешкодити оптимальному виконанню запиту, якщо статистика оновилася, а новий оптимальні план для неї побудований не буде. Для виконання Очищення процедурного кешу необхідно виконати наступний SQL запит:
Час виконання. відразу після поновлення статистики в одному завданні (тобто не рідше ніж раз на добу).
Дефрагментація індексів
Так само як і фрагментація файлів при частому їх зміні, призводить до зниження продуктивності файлових операцій, так і фрагментація індексу, що виникає при великому навантаженні на СУБД, призводить до зниження продуктивність системи в цілому. При загальному рівні фрагментації індексу бази більше 25% спостерігається різке падіння продуктивності сервера баз даних.
Рекомендований період. не рідше 1 разу на тиждень, а при великому навантаженні і раз на добу.
Реіндексація таблиць БД
Реіндексація дозволяє істотно підвищити продуктивність системи в цілому. Під час реіндексація виконується повне перестроювання індексів таблиць. Оскільки індекси формуються заново, то після реіндексація сенсу проводити дефрагментацію індексів просто немає.
Оскільки операція проводиться тільки в монопольному режимі і при виконанні блокує таблиці баз MS SQL, то логічно проводити її в неробочий час, наприклад вночі. Всі інші операції проводяться в фоновому режимі без монопольного захоплення таблиць.
Рекомендований період. не рідше 1 разу на тиждень.
Рекомендований період. не рідше 1 разу на добу.
Налаштування регламентних робіт

Налаштування регламентних робіт на SQL-сервері проводимо в MS SQL Server Management Studio. Підключаємося до сервер і заходимо в папку "Управління -> Плани обслуговування". Створити план обслуговування можна "вручну" або за допомогою майстра, часто виходить комбінація цих способів.
Оновлення статистики та Очищення процедурного кешу робимо в одному плані, наприклад раз на добу на годину ночі. Оновлення статистики робимо за допомогою майстра для всіх баз, відкриваємо отримане завдання і додаємо з Панелі елементів ще один елемент «Завдання" Виконання інструкції T-SQL "». Відкривши подвійним клацанням, прописуємо в нього скрипт для очищення кеша, а потім з'єднуємо стрілочкою для вказівки правильної послідовності виконання. Оновлення статистики та Очищення процедурного кешу
Має сенс об'єднати ці завдання в один План обслуговування (наприклад, назвавши його «Індекси»), але для кожного створити окремий Вкладений план зі своїм Планом вкладеного плану.
Оптимізація виконання регламентних робіт
У найпростішому вигляді кожне завдання можна налаштувати у вигляді окремого Плану обслуговування з індивідуальним розкладом. Однак, куди більш розумніше групувати завдання в загальні плани обслуговування. Угруповання завдань може бути виконана за різними ознаками: загальним розкладом (щоденні завдання або щотижневі), по послідовності або залежно виконання і за іншими критеріями.
Для найбільш часто змінюваних таблиць можна налаштувати періодичність регламентних завдань частіше, для всіх інших стандартно раз на добу. Такий підхід дозволить розподілити виконання операцій в часі, знизивши навантаження на сервер під час їх проведення, і в той же час підвищити актуальність і продуктивність роботи системи.
Більш детально про оптимізацію регламентних робіт - в нашій наступній статті.