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

Можно ли иметь .mdf 92 МБ и ldf 58 МБ? Как вести журнал, чтобы все работало нормально?

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

Как и что я могу или должен делать, чтобы держать файл журнала под контролем?

Скрипт SQL, который я выполняю по ночному расписанию, выглядит так:

declare @DBname varchar(500)
set @DBname = 'E:\Database\backup\PMIS_backup_' +
    convert(varchar(MAX), getdate(), 23 ) +'.bak'

BACKUP DATABASE [PMIS] TO DISK = @DBname
    WITH NOFORMAT, NOINIT, NAME = @DBname, SKIP, REWIND, NOUNLOAD, STATS = 10

База данных находится в простом режиме восстановления.

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

Если файл журнала делает становитесь больше, вы захотите узнать, почему. Вы можете запустить DBCC SQLPERF (LOGSPACE), чтобы увидеть, какая часть файла журнала используется - если он постоянно высокий, то проверьте столбец log_reuse_wait_desc в master.sys.databases, чтобы узнать, почему он не использует повторно пространство, как предполагалось. Если использование низкое, то, вероятно, произошла какая-то разовая транзакция, которая выполнила тонну работы и вызвала рост файла журнала. Если это транзакция, которая будет происходить регулярно, то многократное сжатие и увеличение файла журнала только ухудшит производительность, поэтому оставьте его любого размера, обеспечивающего удобное рабочее пространство. С другой стороны, если размер файла журнала во много раз превышает размер файла данных, то в этом, вероятно, нет необходимости.

Вы делаете резервные копии журналов транзакций? Каждый раз при успешном выполнении SQL удаляет неактивные транзакции из журнала, и только это может сделать размер файла журнала транзакций управляемым.

Вам нужно будет сжать файл журнала после выполнения резервного копирования файла журнала.

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

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

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