Усечение журнала транзакций
Если не удалять записи из журнала транзакций, со временем он заполнит все доступное место на диске, где хранятся физические файлы журнала. Процесс автоматического усечения журнала освобождает место в логическом журнале для повторного использования журналом транзакций.
За исключением тех случаев, когда усечение журнала по каким-то причинам задерживается, оно выполняется автоматически следующим образом.
В простой модели восстановления — после достижения контрольной точки.
В модели полного восстановления или в модели восстановления с неполным протоколированием — после создания резервной копии журналов, при условии, что со времени предыдущей операции резервного копирования была достигнута контрольная точка. Дополнительные сведения см. в подразделе «Усечение журнала в модели полного восстановления и модели восстановления с неполным протоколированием» далее в этом разделе.
Несмотря на автоматическое выполнение, процедура усечения журнала может быть задержана из-за множества факторов. Дополнительные сведения о причинах задержки усечения журнала см. в разделе Факторы, могущие вызвать задержку усечения журнала.
Важно! |
---|
В случае большой задержки усечения журнала возможно заполнение журнала транзакций. Дополнительные сведения о том, что нужно делать при переполнении журнала транзакций, см. в разделе Устранение неполадок при переполнении журнала транзакций (ошибка 9002). |
Дополнительные сведения об усечении журнала см. в подразделе «Как работает усечение журнала» далее в разделе.
Усечение журнала в модели полного восстановления и модели восстановления с неполным протоколированием.
В модели полного восстановления или модели восстановления с неполным протоколированием неактивную часть журнала нельзя усечь, пока в резервную копию не попали все записи журнала. Это необходимо, чтобы обеспечить наличие цепочки журналов — набора записей журнала с неразрывной последовательностью регистрационных номеров транзакций в журнале (номера LSN). Журнал усекается при создании резервной копии журналов, если выполняются следующие условия.
С момента создания последней резервной копии журнала была создана контрольная точка. Контрольная точка является важным, но недостаточным условием усечения журнала при использовании модели полного восстановления или модели восстановления с неполным протоколированием. После контрольной точки журнал остается нетронутым по крайней мере до создания следующей резервной копии журналов.
Дополнительные сведения см. в разделе Контрольные точки и активная часть журнала.
Никакие другие факторы не препятствуют усечению журнала.
Обычно при систематическом резервном копировании занимаемое журналом место регулярно освобождается для повторного использования. Однако усечению журнала могут временно помешать различные факторы (например длительная транзакция). Дополнительные сведения см. в разделе Факторы, могущие вызвать задержку усечения журнала.
В инструкции BACKUP LOG не указан параметр WITH COPY_ONLY.
Резервное копирование журнала транзакций
Как работает усечение журнала
Примечание |
---|
Усечение не уменьшает размер файла физического журнала. Для уменьшения физического размера файла журнала необходимо его сжатие. Сведения о сжатии файла физического журнала см. в разделе Сжатие журнала транзакций. |
Журнал транзакций является оборачиваемым файлом. При создании базы данных логический файл журнала начинается в начале физического файла журнала. Новые записи журнала добавляются в конце логического журнала и приближаются к концу физического файла журнала. Журнал транзакций в базе данных сопоставляет один или несколько физических файлов. Компонент SQL Server Database Engine делит каждый физический файл журнала на несколько виртуальных файлов журнала. Процесс усечения журнала освобождает пространство в логическом журнале путем удаления неактивных виртуальных файлов журналов из начала логического журнала. Подробные сведения об архитектуре журнала транзакций см. в разделах Логическая архитектура журнала транзакций и Физическая архитектура журнала транзакций.
Файлы виртуального журнала являются единицей дискового пространства, разрешенной для повторного использования. Усекать можно только виртуальные файлы журнала, содержащие неактивные записи. Активная часть журнала транзакций (активный журнал) не подлежит усечению, поскольку является необходимой для восстановления базы данных. Начало активного журнала указывает последняя контрольная точка, до которой можно усекать журнал.
Примечание |
---|
Дополнительные сведения о работе виртуальных файлов журнала см. в разделе Физическая архитектура журнала транзакций. |
При создании контрольной точки неактивная часть журнала транзакций помечается как неиспользуемая, после чего ее можно освободить путем усечения журнала. При этом неактивные виртуальные файлы журнала освобождаются для повторного использования. Когда в удаленный виртуальный файл журнала добавляется новая запись, он снова становится активным.
Кроме прочих данных, в контрольной точке записывается регистрационный номер транзакции в журнале (номер LSN) первой записи журнала, которую необходимо сохранить для успешного отката на уровне базы данных. Этот номер LSN называется минимальным номером LSN восстановления (MinLSN). Начало активной части журнала занято виртуальным файлом журнала, содержащим MinLSN. При усечении журнала транзакций освобождаются только те записи, которые находятся перед этим виртуальным журналом.
На следующем рисунке показан журнал транзакций до усечения и после. На первом рисунке показан журнал транзакций, который никогда не усекался. В настоящий момент логический журнал состоит из четырех виртуальных файлов. Логический журнал начинается с начала первого файла виртуального журнала и заканчивается виртуальным файлом журнала 4. Запись MinLSN находится в виртуальном журнале 3. Виртуальные журналы 1 и 2 содержат только неактивные записи журнала. Эти записи можно усечь. Виртуальный журнал 5 пока не используется и не является частью текущего логического журнала.
На втором рисунке показан журнал после усечения. Виртуальные журналы 1 и 2 усечены и могут использоваться повторно. Логический журнал теперь начинается с начала виртуального журнала 3. Виртуальный журнал 5 все еще не используется и не является частью текущего логического журнала.