Назад | Перейти на главную страницу

Уменьшение начального размера файла журнала базы данных

Microsoft SQL Server 2005

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

Это не системная база данных, а база данных, созданная и заполненная пользователем.

Если для модели восстановления базы данных установлено значение FULL или BULK-LOGGED, база данных и журнал транзакций обрабатываются полностью отдельно.

Таким образом, резервное копирование базы данных не освобождает журнал; вы все равно должны сделать резервную копию журнала, чтобы использовать его повторно.

И наоборот, если файл журнала слишком велик для вас - но смотрите ниже - изменение размера файлов данных ничего не дает; вы должны явно создать резервную копию, а затем сжать физический журнал.

ОДНАКО, не используйте автоматическое выращивание только потому, что это выглядит удобно! Существуют серьезные штрафы за наличие многогигабайтного файла журнала, который был увеличен с шагом 10 МБ, что хорошо документировано на веб-сайте Microsoft.

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

Когда ваш журнал транзакций увеличивается с 10 МБ до 1 ГБ с шагом 10 МБ, скорее всего, он будет фрагментирован на тысячу виртуальных журналов; это вредит производительности.

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

Затем отключите автоматический рост и включите мониторинг использования журналов, чтобы он предупреждал вас, когда оно превышает 90% или около того.

Гораздо лучше время от времени вручную добавлять несколько 100 МБ, сводя фрагментацию к минимуму.

Не уверены, что это правильное направление, но разве поворот журнала не сделает это за вас? Я предполагаю, что вы используете Linux. По сути, if будет копировать файл журнала, сжимать его, а затем удалять файл журнала (или усекать его в зависимости от конфигурации logrotate) и продолжать записывать файл журнала и все, что предварительно обрабатывается, пока сжатие происходило после компрессия или HUP; опять же, это логротат в Linux.

Если вы используете Windows, я уверен, что вы можете что-то написать, если это не то, что Windows может обрабатывать, но в целом вы, вероятно, хотите сжать файл журнала, а затем начать писать новую копию в свой журнал, ежедневно / еженедельно / ежемесячно (в зависимости от ваших требований).