Регламентні операції для MS SQL Server



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

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

При інтенсивній роботі з таблицями бази даних виникає ефект
фрагментації індексів, який може призвести до зниження ефективності
роботи запитів.
Рекомендується регулярне виконання дефрагментації індексів.
Дефрагментація індексів не блокує таблиці, і не буде заважати роботі
інших користувачів, проте створює додаткове навантаження на SQL
Server. Оптимальна частота виконання даної регламентної процедури
має обиратися згідно з навантаженням на систему і ефектом,
одержуваних від дефрагментації. Рекомендується виконувати дефрагментацію
індексів не рідше одного разу на день. Реіндексація таблиць бази даних
Реіндексація таблиць включає повне перестроювання індексів таблиць бази
даних, що призводить до суттєвої оптимізації їх роботи.
Рекомендується виконувати регулярну переіндексацію таблиць бази даних.
Реіндексація таблиць блокує їх на весь час своєї роботи, що може
істотно позначитися на роботі користувачів. У зв'язку з цим
реіндексацію рекомендується виконувати під час мінімального завантаження
системи.
Контроль виконання регламентних процедур на рівні СУБД
Необхідно здійснювати регулярний контроль виконання регламентних процедур на рівні СУБД.



  • Проектування бази даних
  • Причини не оптимальності запитів та їх оптимізація
  • Безпека в 1С Підприємство 8