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

Синтаксис:

DBCC SHOWCONTIG

[    ( { table_name | table_id | view_name | view_id }

[ , index_name | index_id ]

)

]

[ WITH { ALL_INDEXES

| FAST [ , ALL_INDEXES ]

| TABLERESULTS [ , { ALL_INDEXES } ]

[ , { FAST | ALL_LEVELS } ]

}

]

Пример

Следующий пример выполняет оператор для доступа к таблице Customers:

USE Northwind

DBCC SHOWCONTIG (Customers, PK_Customers)

Результат выполнения команды:

DBCC SHOWCONTIG scanning 'Customers' table...

Table: 'Customers' (2073058421); index ID: 1, database ID: 6

TABLE level scan performed.

- Pages Scanned................................: 3

- Extents Scanned..............................: 2

- Extent Switches..............................: 1

- Avg. Pages per Extent........................: 1.5

- Scan Density [Best Count: Actual Count]......: 50.00% [1:2]

- Logical Scan Fragmentation ..................: 0.00%

- Extent Scan Fragmentation ...................: 0.00%

- Avg. Bytes Free per Page.....................: 246.7

- Avg. Page Density (full).....................: 96.95%

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Оператор DBCC INDEXDEFRAG

Оператор DBCC INDEXDEFRAG может дефрагментировать фрагментированные данные листового уровня кластерного и не кластерного индекса таблицы или просмотрщика. Дефрагментирование упорядочивает страницы так, чтобы их физическое расположение максимально совпадало с логическим. Это может повысить производительность.

Когда вы используете DBCC INDEXDEFRAG, он:

*  Упаковывает страницы индекса, делая его соответствующим параметру FILLFACTOR. Любые пустые страницы удаляются.

*  Дефрагментируйте один файл в определённый момент времени, когда индекс разделяет несколько файлов. Страницы не разделяются между файлами.

*  Отображайте процесс дефрагментации пользователю. Процесс может быть прерван в любой момент времени.

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

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

Оператор DBCC INDEXDEFRAG не повышает производительности, когда индексы дефрагментированы на диске физически. Для физической дефрагментации таблицы нужно перестроить индексы.

Синтаксис:

DBCC INDEXDEFRAG

( { database_name | database_id | 0 }

, { table_name | table_id | 'view_name' | view_id }

, { index_name | index_id }

)    [ WITH NO_INFOMSGS ]

Следующий пример запускает оператор DBCC INDEXDEFRAG на индекс mem_no_CL таблицы Member базы данных Credit:

DBCC INDEXDEFRAG(credit, member, mem_no_CL)

Опция  DROP_EXISTING

Используйте опцию DROP_EXISTING для изменения характеристики индекса или перестроения индекса без его удаления и воссоздания. Выгода от использования DROP_EXISTING это то, что вы можете изменять индексы, созданные с ограничением PRIMARY KEY или UNIQUE.

Выполняйте оператор CREATE INDEX с опцией DROP_EXISTING для перестроения именованного кластерного или не кластерного индекса.

*  Реорганизация листового уровня страниц с помощью сжатия или расширения строк;

*  Удаление фрагментации;

*  Перерасчёт статистики индекса.

Когда вы используете опцию DROP_EXISTING, вы можете изменить следующие характеристики индекса:

*  Тип

o  Вы можете изменить не кластерный индекс на кластерный;

o  Вы не можете изменить кластерный индекс на не кластерный.

*  Колонки индекса

o  Вы можете изменить объявление индекса с помощью указания других колонок;

o  Вы можете указать дополнительные колонки или удалить определённые колонки из составного индекса;

o  Вы можете изменить индексную колонку, чтобы она была уникальной или нет.

*  Настройки

o  Вы можете изменить процентные значения FILLFACTOR или PAD INDEX.