Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
Azure SQL База данных
Azure SQL Управляемый экземпляр
SQL База данных в Microsoft Fabric
Наличие свободного места на диске имеет особое значение при создании, перестроении или удалении индексов. Недостаток места на диске может понизить производительность и даже вызвать ошибку операции с индексом. В этой статье содержатся общие сведения, которые помогут определить объем дискового пространства, необходимого для операций языка определения данных индекса (DDL).
Операции с индексами, для которых не требуется дополнительного места на диске
Дополнительное место на диске не требуется для следующих операций с индексами.
ALTER INDEX REORGANIZE; однако требуется пространство журнала.DROP INDEXкогда вы удаляете некластеризованный индекс.DROP INDEXПри переводе кластеризованного индекса в офлайн-режим без указания предложенияMOVE TO, если некластеризованных индексов не существует.CREATE TABLE(PRIMARY KEYилиUNIQUEограничения)
Операции индексирования, требующие дополнительного места на диске
Все остальные DDL-операции индекса требуют дополнительного временного места на диске на время операции, а также постоянного пространства для хранения новых структур индекса.
При создании новой структуры индекса место на диске требуется как для старой (исходной), так и для новой (целевой) структуры в соответствующих файлах и файловых группах. Старая структура не будет удалена до фиксации транзакции создания индекса.
Следующие DDL-операции индекса, создающие новые структуры индексов, требуют дополнительного места на диске:
CREATE INDEXCREATE INDEX WITH DROP_EXISTINGALTER INDEX REBUILD-
ALTER TABLE ADD CONSTRAINT(PRIMARY KEYилиUNIQUE) -
ALTER TABLE DROP CONSTRAINT(PRIMARY KEYилиUNIQUE) если ограничение основано на кластеризованном индексе -
DROP INDEX MOVE TO(Применяется только к кластеризованным индексам.)
Временное место на диске для сортировки
Помимо дискового пространства, необходимого для исходных и целевых структур, временное место на диске требуется для сортировки, если оптимизатор запросов не находит план выполнения, который не требует сортировки.
Если сортировка необходима, то она выполняется для каждого нового индекса. Например, при перестройке кластеризованного индекса и связанных с ним некластеризованных индексов в рамках одной инструкции индексы сортируются один за другим. Следовательно, для сортировки необходимо по крайней мере столько дополнительного временного места на диске, сколько занимает самый большой индекс в операции. Такой индекс почти всегда оказывается кластеризованным.
SORT_IN_TEMPDB Если для параметра задано значениеON, самый большой индекс должен соответствоватьtempdb. Хотя этот параметр увеличивает объем временного дискового пространства, используемого для создания индекса, он может сократить время, необходимое для создания индекса, когда tempdb находится на наборе дисков, отличных от пользовательской базы данных.
Если SORT_IN_TEMPDB задано значение OFF (по умолчанию) для каждого индекса, включая секционированные индексы, выполняется сортировка в целевом пространстве диска, а для новых структур индексов требуется только место на диске.
Пример вычисления места на диске см. в примере "Дисковое пространство индекса".
Временное место на диске для операций с индексами в сети
При выполнении действий с индексами в режиме в сети необходимо дополнительное временное место на диске.
При создании, перестройке или удалении вне сети кластеризованного индекса создается временный некластеризованный индекс для сопоставления старых закладок с новыми.
SORT_IN_TEMPDB Если для параметра задано ONзначение , этот временный индекс создается в tempdb. Если SORT_IN_TEMPDB задано значение OFF, используется та же файловая группа или схема секционирования, что и целевой индекс. Временный индекс сопоставления содержит одну запись для каждой строки таблицы, содержимое которой представляет собой объединенные старый и новый столбцы закладок, включая уникальные идентификаторы и идентификаторы записи, причем в этой таблице содержится только по одной копии каждого столбца, который используется в обеих закладках. Дополнительные сведения об операциях с индексами в сети см. в разделе "Выполнение операций индекса в сети".
Примечание.
Параметр SORT_IN_TEMPDB не может быть задан для DROP INDEX инструкций. Временный индекс сопоставления всегда создается в той же файловой группе или схеме секционирования, что и целевой индекс.
Для действий с индексами в оперативном режиме применяется управление версиями строк, позволяющее изолировать действия с индексами от воздействия изменений, внесенных другими транзакциями. Это исключает необходимость запрашивать общую блокировку уже считанных записей. Одновременные операции обновления и удаления, выполняемые пользователями, во время онлайн операций с индексами требуют места для записей версий в tempdb. Дополнительные сведения см. в разделе "Выполнение операций индекса в сети ".
Связанные задачи
- Пример использования дискового пространства для индекса
- Дисковое пространство журнала транзакций для операций с индексами
- Оценка размера таблицы
- Оценка размера кластеризованного индекса
- Оценка размера некластеризованного индекса
- Оценка размера кучи