2

私は他の投稿を読み、何時間もの調査を行ってきましたが、それでも賢明ではありません. データ ファイルに 65 ギガ、ログ ファイルに現在 230 ギガのデータベースがあります。より効率的になるようにデータベースを再設計しようとしていますが、スキーマを変更すると、ログ ファイルが大きくなりすぎて、ディスク領域が不足していると Windows が警告します。

ファイルを縮小しようとしましたが、最低でも 220 ギガです。DBCC OPENTRAN を使用すると、アクティブなトランザクションがないことがわかります。select * FROM sys.dm_tran_database_transactions を使用すると、興味深いことが何も起こっていないことがわかります。

私が読んだことの私の解釈は、アクティブなトランザクションがある場合にのみログ ファイルが大きくなり、すべてのトランザクションがコミットされると、ファイルは理論的には非常に小さいものに縮小できるはずだということです。正しい?

truncate_only に続いて dbcc shrinkfile (dbname, 2) を使用してログのバックアップを試みました

このファイルをより管理しやすいものに圧縮するにはどうすればよいですか?

4

1 に答える 1

2

Kimberly Tripp の記事を読みましたか? (この件に関する正規のリファレンスとほぼ同じです):トランザクション ログのスループットを向上させるための 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 
于 2010-02-03T10:58:42.007 に答える