Создание и управление индексами. Создание и управление встроенными процедурами. Оптимизация производительности запросов. Управление транзакциями и блокировками, страница 4

Когда вы используете PAD_INDEX, рассматривайте следующие факты:

*  Сервер SQL использует процент, который вы указали в опции FILLFACTOR для листового и не листового уровней индекса.

*  По умолчанию, сервер всегда оставляет необходимое пространство для размещения в списке одной строки максимального размера индекса для каждой не листовой страницы.

*  Количество элементов в не листовой странице индекса не может быть меньше двух, не обращая внимания на значение FILLFACTOR.

Следующий пример создаёт индекс с использованием описанных параметров:

USE Northwind

CREATE INDEX OrderID_ind

ON Orders(OrderID) WITH PAD_INDEX, FILLFACTOR=70

7.3 Поддержка индекса

Вы должны поддерживать индексы после того, как вы создали их, чтобы гарантировать оптимальную производительность. Через определённое время данные становятся фрагментированными. Вы управляете фрагментацией данных в зависимости от вашего производственного окружения.

Сервер SQL предоставляет Index Tuning Wizard, который отслеживает использование индекса автоматически и помогает в поддержке и создания индекса, который будет выполняться оптимально.

Вы также можете использовать различные средства и опции, облегчающие перестроение индексов и проверки оптимизации индексов.

Фрагментация данных

В зависимости от вашего производственного окружения, фрагментация может хорошо сказываться или ухудшать производительность.

Фрагментация возникает, когда данные изменяются. Для примера, когда строка данных добавлена или удалена из таблицы, или когда значение в индексной колонке изменилось, сервер приводит в порядок индексные страницы для согласования изменений и хранилища индексных данных. Приведение в порядок индексных страниц называется разделением страниц. Разделение увеличивает размер таблицы и время, необходимое для обработки запроса.

Существует два метода управления фрагментацией в SQL Server. Первый метод – удаление и воссоздание кластерного индекса и указания опции FILLFACTOR. Второй метод – перестроение индексов и указания опции FILLFACTOR.

Оператор DBCC SHOWCONTIG

Оператор DBCC SHOWCONTING отображает информацию о фрагментации данных и индексов указанной таблицы.

Когда вы выполняете оператор DBCC SHOWCONTING, SQL Server проходит через индексные страницы и листовой уровень для определения сильно ли фрагментирована таблица или индекс. Он также определяет, насколько заполнены страницы данных и индексов.

Выполняйте оператор DBCC SHOWCONTING на сильно изменяемых таблицах, таблицах, содержащих импортированные данные или таблицах, медленно выполняющих запросы. Когда вы выполняете оператор DBCC SHOWCONTING рассматривайте следующие факты и рекомендации:

*  Сервер SQL требует ссылки на таблицу или индекс, когда вы выполняете оператор DBCC SHOWCONTING. Запросите таблицу sysindexes для определения таблицы или ID индекса.

*  Определите, как часто вы должны выполнять DBCC SHOWCONTING.

Следующая таблица описывает статистику, которую возвращает оператор DBCC SHOWCONTING:

Статистика

Описание

Pages scanned

Количество страниц в таблице или индексе

Extents scanned

Количество пространств в таблице или индексе

Average pages per extend

Среднее количество страниц в пространстве

Extend switches

Количество раз, которые оператор покидал пространство во время пересечения страниц пространства

Scan density [Best count: Actual Count]

Количество плотности сканирования 100 (процентов). Если меньше 100, то некоторое количество фрагментации существует. Best Count – идеальное число изменений пространств. Actual Count – текущее значение изменений пространств

Logical scan fragmentation

Процент страниц вне порядка возвращённых сканированием листьев страниц и индексов.

Extent scan fragmentation

Процент пространств вне порядка возвращённых сканированием листьев страниц и индексов.

Average bytes free per page

Среднее количество свободный байт на сканированных страницах. Большое значение указывает на маленькую плотность заполнения. Маленькое значение лучшее. Большой размер строк может приводить к большому значению этого параметра

Average page density (full)

Значение, указывающее полноту страниц. Это значение принимает во внимание размер строки, поэтому оно более актуально полноты страниц. Больший процент более предпочтителен.