Усечение журнала транзакций

Изменения: 15 сентября 2007 г.

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

За исключением тех случаев, когда усечение журнала по каким-то причинам задерживается, оно выполняется автоматически следующим образом.

  • В простой модели восстановления — после достижения контрольной точки.
  • В модели полного восстановления или в модели восстановления с неполным протоколированием — после создания резервной копии журналов, при условии, что со времени предыдущей операции резервного копирования была достигнута контрольная точка. Дополнительные сведения см. в подразделе «Усечение журнала в модели полного восстановления и модели восстановления с неполным протоколированием» далее в этом разделе.

Несмотря на автоматическое выполнение, процедура усечения журнала может быть задержана из-за множества факторов. Дополнительные сведения о причинах задержки усечения журнала см. в разделе Факторы, вызывающие задержку усечения журнала.

ms189085.note(ru-ru,SQL.90).gifВажно!
В случае большой задержки усечения журнала возможно заполнение журнала транзакций. Дополнительные сведения о том, что нужно делать при переполнении журнала транзакций, см. в разделе Устранение неполадок при переполнении журнала транзакций (ошибка 9002).

Дополнительные сведения об усечении журнала см. в подразделе «Как работает усечение журнала» далее в разделе.

Усечение журнала в модели полного восстановления и модели восстановления с неполным протоколированием.

В модели полного восстановления или модели восстановления с неполным протоколированием неактивную часть журнала нельзя усечь, пока в резервную копию не попали все записи журнала. Это необходимо, чтобы обеспечить наличие цепочки журналов — набора записей журнала с неразрывной последовательностью регистрационных номеров транзакций в журнале (номера LSN). Журнал усекается при создании резервной копии журналов, если выполняются следующие условия.

  • С момента создания последней резервной копии журнала была создана контрольная точка. Контрольная точка является важным, но недостаточным условием усечения журнала при использовании модели полного восстановления или модели восстановления с неполным протоколированием. После контрольной точки журнал остается нетронутым по крайней мере до создания следующей резервной копии журналов.
    Дополнительные сведения см. в разделе Контрольные точки и активная часть журнала.
  • Никакие другие факторы не препятствуют усечению журнала.
    Обычно при систематическом резервном копировании занимаемое журналом место регулярно освобождается для повторного использования. Однако усечению журнала могут временно помешать различные факторы (например, длительная транзакция). Дополнительные сведения см. в разделе Факторы, вызывающие задержку усечения журнала.
  • В инструкции BACKUP LOG не указаны параметры WITH NO_TRUNCATE, WITH NO_LOG или WITH COPY_ONLY.
    ms189085.note(ru-ru,SQL.90).gifВажно!
    Параметры NO_LOG и TRUNCATE_ONLY инструкции BACKUP LOG разрывают цепочку журналов, поскольку при использовании этих параметров удаляется неактивная часть журнала без создания его резервной копии. До создания следующей полной или разностной резервной копии база данных не будет защищена от ошибок носителя. В следующей версии Microsoft SQL Server эта возможность будет удалена. Не используйте ее при работе над новыми приложениями и как можно быстрее измените приложения, в которых она в настоящее время используется.

Резервное копирование журнала транзакций

Как работает усечение журнала

ms189085.note(ru-ru,SQL.90).gifПримечание.
Усечение не уменьшает размер файла физического журнала. Для уменьшения физического размера файла журнала необходимо его сжатие. Сведения о сжатии файла физического журнала см. в разделе Сжатие журнала транзакций.

Журнал транзакций является оборачиваемым файлом. При создании базы данных логический файл журнала начинается в начале физического файла журнала. Новые записи журнала добавляются в конце логического журнала и приближаются к концу физического файла журнала. Журнал транзакций в базе данных сопоставляет один или несколько физических файлов. Компонент SQL Server Database Engine делит каждый физический файл журнала на несколько виртуальных файлов журнала. Процесс усечения журнала освобождает пространство в логическом журнале путем удаления неактивных виртуальных файлов журналов из начала логического журнала. Подробные сведения об архитектуре журнала транзакций см. в разделах Логическая архитектура журнала транзакций и Физическая архитектура журнала транзакций.

Файлы виртуального журнала являются единицей дискового пространства, разрешенной для повторного использования. Усекать можно только виртуальные файлы журнала, содержащие неактивные записи. Активная часть журнала транзакций (активный журнал) не подлежит усечению, поскольку является необходимой для восстановления базы данных. Начало активного журнала указывает последняя контрольная точка, до которой можно усекать журнал.

ms189085.note(ru-ru,SQL.90).gifПримечание.
Дополнительные сведения о работе виртуальных файлов журнала см. в разделе Физическая архитектура журнала транзакций.

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

Кроме прочих данных, в контрольной точке записывается регистрационный номер транзакции в журнале (номер LSN) первой записи журнала, которую необходимо сохранить для успешного отката на уровне базы данных. Этот номер LSN называется минимальным номером LSN восстановления (MinLSN). Начало активной части журнала занято виртуальным файлом журнала, содержащим MinLSN. При усечении журнала транзакций освобождаются только те записи, которые находятся перед этим виртуальным журналом.

На следующем рисунке показан журнал транзакций до усечения и после. На первом рисунке показан журнал транзакций, который никогда не усекался. В настоящий момент логический журнал состоит из четырех виртуальных файлов. Логический журнал начинается с начала первого файла виртуального журнала и заканчивается виртуальным файлом журнала 4. Запись MinLSN находится в виртуальном журнале 3. Виртуальные журналы 1 и 2 содержат только неактивные записи журнала. Эти записи можно усечь. Виртуальный журнал 5 пока не используется и не является частью текущего логического журнала.

Журнал транзакций с четырьмя виртуальными журналами

На втором рисунке показан журнал после усечения. Виртуальные журналы 1 и 2 усечены и могут использоваться повторно. Логический журнал теперь начинается с начала виртуального журнала 3. Виртуальный журнал 5 все еще не используется и не является частью текущего логического журнала.

Файл журнала, разделенный на четыре виртуальных файла журнала

См. также

Основные понятия

Контрольные точки и активная часть журнала
Установка параметров базы данных
Использование резервных копий журналов транзакций
Выбор модели восстановления для базы данных
Обзор моделей восстановления

Другие ресурсы

BACKUP (Transact-SQL)
Truncate Method

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

15 сентября 2007 г.

Изменения
  • Исправленный вводный текст поясняет, что усечение журнала выполняется автоматически, если только каждый виртуальный файл журнала не содержит активный журнал.
  • Сведения об архитектуре перемещены из введения в подраздел «Как выполняется усечение журнала».
  • Добавлены ссылки на раздел о создании резервной копии журнала транзакций.

14 апреля 2006 г.

Изменения
  • Расширено описание влияния модели восстановления на усечение журнала.
  • Расширено описание рисунков.