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


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

В некоторых случаях может быть полезно физически сжать или развернуть физический файл журнала транзакций SQL Server базы данных. В этом разделе содержатся сведения о том, как отслеживать размер SQL Server журнал транзакций, сжимать журнал транзакций, добавлять или увеличивать файл журнала транзакций, оптимизировать темпы роста журнала транзакций tempdb и контролировать рост файла журнала транзакций.

Мониторинг используемого пространства журнала

Контролировать используемое пространство журнала можно с помощью процедуры DBCC SQLPERF (LOGSPACE). Она возвращает сведения об объеме пространства, используемого журналом в данный момент, и указывает, если необходимо провести усечение журнала транзакций. Дополнительные сведения см. в разделе DBCC SQLPERF (Transact-SQL). Для получения сведений о текущем размере файла журнала, его максимальном размере и параметре автоматического увеличения файла вы можете также использовать столбцы size, max_size и growth для данного файла журнала в представлении sys.database_files. Для получения дополнительной информации см. sys.database_files (Transact-SQL).

Важно!

Рекомендуется избегать переполнения диска, содержащего журналы.

Сжатие файла журнала

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

Примечание

Такие факторы, как долго выполняемые транзакции, удерживающие файлы журналов в активном состоянии в течение продолжительного периода времени, могут ограничить или вовсе не допустить возможность сжатия журнала. Сведения о факторах, которые могут задержать усечение журнала, см. в разделе Журнал транзакций (SQL Server).

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

Сжатие файла журнала (без сжатия файлов базы данных)

Мониторинг событий сжатия файла журнала

To monitor log space

Примечание

Можно задать автоматическое выполнение сжатия файлов базы данных и журнала. Однако автоматическое сжатие не рекомендуется, поэтому свойство autoshrink базы данных по умолчанию имеет значение FALSE. Если свойство autoshrink имеет значение TRUE, то автоматическое сжатие уменьшит размер файла только в том случае, если неиспользуемое пространство занимает более 25 % от общего объема. Файл будет сжат либо до размера, в котором 25 % пространства не используется, либо до исходного размера, каким бы большим он ни был. Сведения об изменении параметра свойства см. в autoshrink разделах Просмотр или изменение свойств базы данных с помощью свойства Авто сжатие на странице Параметры или ALTER DATABASE SET Options (Transact-SQL) используйте параметр AUTO_SHRINK.

Добавление или увеличение размера файла журнала

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

  • Файл журнала добавляется в базу данных с помощью предложения ADD LOG FILE инструкции ALTER DATABASE. Это позволяет увеличить размер файла.

  • Файл журнала можно увеличить с помощью предложения MODIFY FILE инструкции ALTER DATABASE. При этом следует указать синтаксис SIZE и MAXSIZE. Дополнительные сведения см. в разделе ALTER DATABASE (Transact-SQL).

Оптимизация размера журнала транзакций tempdb

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

Управление ростом файла журнала транзакций

Для управления ростом файла журнала транзакций можно использовать инструкцию ALTER DATABASE (Transact-SQL ). Следует отметить следующее.

  • Чтобы изменить текущий размер файла в КБ, МБ, ГБ и ТБ, используйте параметр «SIZE».

  • Чтобы изменить шаг приращения размера, используйте параметр FILEGROWTH. Значение 0 указывает, что автоматическое приращение выключено и дополнительное пространство для файла не разрешено. Небольшое значение параметра автоувеличения прироста размера файла журнала может снизить производительность системы. Во избежание слишком частых увеличений размера файла журнала следует задать достаточно большое значение шагу роста файла журнала. Как правило, достаточно установить значение увеличения шага роста равным 10 %.

    Сведения об изменении свойства прироста для файлов журнала см. в разделе ALTER DATABASE (Transact-SQL).

  • Чтобы установить максимальный размер файла журнала в КБ, МБ, ГБ и ТБ или задать неограниченный размер, используйте параметр MAXSIZE.

См. также:

BACKUP (Transact-SQL)
Устранение неполадок при переполнении журнала транзакций (ошибка SQL Server 9002)