Поделиться через


Дисковое пространство журнала транзакций для операций с индексами

Применимо к:SQL ServerAzure SQL База данныхAzure SQL Управляемый экземплярSQL База данных в Microsoft Fabric

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

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

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

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

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

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

    Примечание.

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

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

  4. Не выполняйте операцию онлайн-индексирования в явной транзакции. Журнал не усечён до завершения явной транзакции.