Журнал транзакций SQL Server 2005 всегда слишком велик

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

Я пытался сжать файл, и меньше всего получается ~ 220 гиг. используя DBCC OPENTRAN, я вижу, что активных транзакций нет. используя select * FROM sys.dm_tran_database_transactions, я вижу, что ничего интересного не происходит.

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

Я пробовал журнал резервного копирования с truncate_only, за которым следует dbcc shrinkfile (dbname, 2)

Что я могу сделать, чтобы сжать этот файл до чего-то более управляемого?


person Blootac    schedule 03.02.2010    source источник


Ответы (1)


Вы читали статью Кимберли Трипп? (Практически каноническая ссылка на эту тему): 8 шагов к увеличению пропускной способности журнала транзакций.

Возможно, вы столкнулись с фрагментацией VLF: VLF журнала транзакций - слишком много или слишком мало?. Выполните эту команду, чтобы узнать:

DBCC LOGINFO;

Выполнили ли вы эту стандартную процедуру для сжатия журнала:

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

BACKUP LOG [MyDB] 
TO DISK = N'E:\db.bak' 
GO 

2) Уменьшите журнал транзакций.

USE [MyDB]
GO

DBCC SHRINKFILE ('MyDB_Log', TRUNCATEONLY)
GO

3) Измените размер журнала транзакций и настройте автоматический рост:

USE [MyDB]
GO

ALTER DATABASE [MyDB] 
    MODIFY FILE ( NAME = N'MyDB_Log', SIZE = 1024000KB, FILEGROWTH = 1024000KB)
GO 
person Mitch Wheat    schedule 03.02.2010
comment
Большое Вам спасибо. Я не встречал этой статьи. Для меня это была фрагментация VLF. Если у кого-то еще есть эта проблема, запустите DBCC LOGINFO; и посмотрите количество возвращенных строк. статья предполагает, что если их ›50, то, вероятно, проблема заключается в фрагментации. После следующего пункта 8 статьи размер файла журнала уменьшилось с 230 гигабайт до 2 МБ! - person Blootac; 03.02.2010