Место на диске журнала транзакций для операций обработки индекса

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

При крупномасштабных операциях обработки индекса могут формироваться большие объемы загружаемых данных, что может привести к быстрому заполнению журнала транзакций. Чтобы обеспечить возможность отката операции обработки индекса, журнал транзакций не может быть усечен до тех пор, пока операция обработки индекса не завершится; однако во время обработки индекса возможно выполнение резервного копирования журнала. Следовательно, журнал транзакций должен иметь достаточно места для хранения как транзакций обработки индекса, так и любых параллельных пользовательских транзакций, выполняющихся во время обработки индекса. Это верно для операций обработки индекса как в режиме вне сети, так и в режиме в сети. Так как доступ к базовым таблицам во время обработки индекса в режиме вне сети невозможен, количество пользовательских транзакций может быть небольшим и заполнение журнала не будет таким стремительным. Операции обработки индекса в режиме в сети не препятствуют пользовательской работе, поэтому обработка больших индексов вкупе с большим количеством параллельных пользовательских транзакций может привести к непрерывному заполнению журнала транзакций без возможности его усечения.

Рекомендации

При крупномасштабных операциях обработки индекса следует принять во внимание следующие рекомендации:

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

  2. Рассмотрите возможность установки параметра SORT_IN_TEMPDB в положение ON для операции обработки индекса. Это отделяет транзакции индекса от параллельных пользовательских транзакций. Транзакции индекса будут храниться в журнале транзакций tempdb , а параллельные пользовательские транзакции — в журнале транзакций пользовательской базы данных. Это позволяет при необходимости выполнить усечение журнала транзакций пользовательской базы данных во время обработки индекса. Кроме того, если журнал tempdb находится не на одном с журналом пользовательской базы данных диске, два журнала не конкурируют в использовании одного места на диске.

    Заметка

    Убедитесь том, что база данных и журнал транзакций tempdb имеют достаточно места на диске для выполнения обработки индекса. Журнал транзакций tempdb не может быть усечен до тех пор, пока не завершится обработка индекса.

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

  4. Не выполняйте обработку индекса в сети в явной транзакции. Усечение журнала нельзя будет выполнить до завершения явной транзакции.

Disk Space Requirements for Index DDL Operations

Пример использования места на диске для индекса