Кращі методи: оптимізація індексів в SQL Server 2005, Інші СУБД, Бази даних, статті

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


Я бачу кожен день, як багато адміністраторів баз даних планують оптимізацію індексів за допомогою написаних скриптів T-SQL або через стандартний SQL Maintenance Plan, але вони не підозрюють, що фактично сам SQL Server 2005 дозволяє Вам “настроювати” цей процес.


SQL Server 2005 пропонує опцію (ONLINE = ON or OFF), щоб допомогти налаштувати продуктивність і вимоги паралелізму при створенні або перебудові індексу. З новою можливістю Online Indexing (ONLINE = ON) Ви можете продовжувати виконувати запити та операції з таблицею, індекс якої розбудовується, в той час як автономна індексація (ONLINE = OFF) блокує таблицю.


Важливо пам’ятати: онлайнове створення або перебудова індексу (ONLINE = ON), забезпечуючи максимальний паралелізм, споживає більше ресурсів і вимагає більше часу на виконання!


На допомогу управлінню тимчасовим простором під час операцій з індексом SQL Server надає ще одну опцію: SORT_IN_TEMPDB. SQL Server використовує тимчасове сховище для сортування та інших проміжних завдань під час створення або перебудови індексу. Для цього тимчасового сховища може використовуватися для користувача база даних або база даних TEMPDB.


Коли опція SORT_IN_TEMP оператора CREATE INDEX або ALTER INDEX встановлена ​​в значення OFF (приймається за умовчанням), для тимчасового сховища використовується для користувача база даних. Коли опція SORT_IN_TEMP включена (ON), тимчасове сховище буде знаходитися в базі даних TEMPDB.


Ось рекомендації для кращої стратегії створення / перебудови індексу (безпосередньо від Microsoft). Я рекомендую роздрукувати її:


Переконайтеся, що TEMPDB знаходиться на дискову підсистему, яка забезпечує достатню пропускну здатність введення / виводу, і що TEMPDB є досить великий, щоб надати тимчасове простір, який буде потрібно для операції створення або відновлення індексу. За замовчуванням TEMPDB створюється в каталозі Data в папці, куди встановлено SQL Server (наприклад, C: SQL2005MSSQL.1MSSQLData). При такій конфігурації в TEMPDB може не виявитися досить місця для забезпечення адекватної пропускної здатності введення / виведення. Тому кращим методом є переміщення TEMPDB на носій з достатньою кількістю вільного простору і продуктивністю після установки SQL Server. Крім того, майте на увазі, що база даних TEMPDB – це загальний ресурс для всього примірника SQL Server. Вам слід враховувати активність всіх користувальницьких баз даних, які можуть використовувати TEMPDB, при плануванні дій з TEMPDB.


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


Щоб досягти найменшого впливу на доступ користувачів до таблиці, використовуйте опцію онлайн (ONLINE = ON). Однак така операція онлайн займає більше часу і використовує більший простір в TEMPDB в порівнянні з автономною операцією.


Щоб використовувати найменший обсяг пам’яті в TEMPDB під час перебудови кластерного індексу, використовуйте автономний варіант (ONLINE = OFF). Однак це вплине на паралелізм, оскільки доступ до таблиці запобігається на весь час перебудови індексу.


Щоб використовувати найменшу кількість пам’яті в TEMPDB під час перебудови некластерного індексу, використовуйте онлайновий режим (ONLINE = ON). Онлайнова перебудова також забезпечує кращий паралелізм, але потребує більше часу на виконання.


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

Stefano Demiliani (Оригінал: Best practice when optimizing indexes on SQL Server 2005)
Переклад: Моісеєнко С.І.
Оригінал перекладу


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*