Журнал транзакций SQL Server 2005 всегда слишком большой - PullRequest
2 голосов
/ 03 февраля 2010

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

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

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

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

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

1 Ответ

2 голосов
/ 03 февраля 2010

Вы читали статью Кимберли Триппа? (В значительной степени каноническая справка по теме): 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 
...