Путаница в файле журнала SQL Server - PullRequest
4 голосов
/ 17 января 2009

Я ищу некоторую ясность в файле журнала SQL Server. У меня есть большая база данных (2 ГБ), которая в последнее время по какой-либо причине не была заархивирована. Размер файла журнала для базы данных вырос до примерно 11 ГБ, и, насколько я понимаю, это все транзакции и операторы, которые произошли в базе данных.

Мои вопросы:

Что вызывает сброс файла журнала базы данных? Что на самом деле означает «флеш»? Каковы последствия сокращения размера файла или базы данных для большого файла журнала?

Ответы [ 3 ]

9 голосов
/ 18 января 2009

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

Итак, чтобы решить вашу проблему, сначала сделайте полную резервную копию и резервную копию журнала транзакций. Вам не нужно переходить в простой режим или однопользовательский. Затем сжимайте базу данных и настраивайте резервную копию журнала транзакций каждые несколько часов. На моих серверах я делаю это каждые 10 минут, но это полностью зависит от того, как часто нужно для их среды. Следите за тем, как изменяется размер бревна, не забудьте оставить достаточно места, чтобы не приходилось регулярно его расширять, а также немного больше для развлечения.

Когда вы уменьшаете базу данных, используйте DBCC SHRINKFILE вместо DBCC SHRINKDATABASE , поскольку последняя будет уменьшать всю базу данных, а не только файл журнала. Кроме того, вы не контролируете, сколько места восстанавливается.

3 голосов
/ 17 января 2009

Резервная копия обычно очищает журнал транзакций. Журнал транзакций сохраняет все изменения с момента последнего резервного копирования. В зависимости от способа резервного копирования базы данных вам может не потребоваться вести полный журнал транзакций вообще. Если вы используете MS SQL2000 / MS SQL2005, установка режима восстановления на Простой отменяет журнал транзакций.

Если вы уверены, что у вас есть чистая копия базы данных (без риска потери), можно безопасно удалить журнал транзакций. Для этого есть несколько команд SQL, но я обычно меняю режим восстановления на Simple , затем сжимаю базу данных, затем при необходимости устанавливаю режим восстановления на Full .

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

2 голосов
/ 17 января 2009

На самом деле, я не верю, что резервное копирование базы данных сокращает журналы, а резервное копирование самих журналов транзакций сокращает ее. SQL Server делает различие между ними.

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

...