SQL 2005:インデックスの再構築ジョブがデータベースログファイルをどれだけ拡張できるかを判断できますか?


10

SQL Server 2005で、すべてのデータベースがフルモード(1時間ごとのトランザクションログバックアップを使用)である場合、データベースのすべてのインデックスを再構築してデータベースのログファイルを拡張できるかどうかを判断できますか?そして、それはどれくらい成長することができますか?

正解がない場合は、どのような指示もいただければ幸いです。

前もって感謝します。

回答:


9

はい、オンラインインデックスの再構築について言及していますが、このトピックに関する優れたホワイトペーパーをご覧ください。

http://technet.microsoft.com/en-us/library/cc966402.aspx

ログファイルが自動拡大している場合、アクションが完了した後、デフォルトのトレースを使用してその情報を見つけることができます。

DECLARE @filename VARCHAR(255) 
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'  
FROM sys.traces   
WHERE is_default = 1;  

--Check if the data and log files auto-growed. Look for tempdb, log files etc.
SELECT 
    gt.ServerName
    , gt.DatabaseName
    , gt.TextData
    , gt.StartTime
    , gt.Success
    , gt.HostName
    , gt.NTUserName
    , gt.NTDomainName
    , gt.ApplicationName
    , gt.LoginName
FROM [fn_trace_gettable](@filename, DEFAULT) gt 
JOIN sys.trace_events te ON gt.EventClass = te.trace_event_id 
WHERE EventClass in ( 92, 93 ) --'Data File Auto Grow', 'Log File Auto Grow'
ORDER BY StartTime; 
--

7

インデックスDDL操作がログファイルを増やすかどうかを検出できるだけでなく、これがデフォルトのアクション行です。すべてのインデックス操作は、完全復旧モデルを使用するデータベースに記録されます。

MSDNの次の記事を読むことをお勧めします:インデックスのディスク領域要件の決定

その記事の第3章- インデックス操作トランザクションログのディスク領域から引用します。

" 大規模なインデックス操作では、トランザクションログがすぐにいっぱいになる可能性のある大きなデータロードが生成される可能性があります。インデックス操作を確実にロールバックできるようにするには、インデックス操作が完了するまでトランザクションログを切り捨てることはできません。ただし、ログはインデックス操作中にバックアップできるので、トランザクションログには、インデックス操作の期間中、インデックス操作トランザクションと同時ユーザートランザクションの両方を格納するのに十分なスペースが必要です。これは、オフラインとオンラインの両方のインデックス操作に当てはまります。オフラインのインデックス操作中は、基になるテーブルにアクセスできないため、ユーザートランザクションがほとんどなく、ログがすぐに大きくならない場合があります。オンラインインデックス操作は同時ユーザーアクティビティを妨げないため、大量のオンラインインデックス操作と大量の同時ユーザートランザクションを組み合わせると、ログを切り捨てるオプションなしでトランザクションログが継続的に増大する可能性があります。」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.