接続されているすべてのデータベースのバックアップを毎晩実行するジョブがありますが、その間に誰かが接続していると、サーバーがダウンする可能性があります。大量のCPUオーバーヘッドを処理する必要があります(使用中は5%をわずかに超えており、合計8コアが最も高く、残りはアイドル状態である可能性があります)、問題はI/Oをペギングしていることです。リソースモニターを見ると、mdfおよび.bakファイルへの読み取りのリソースモニターでのI/O優先度の優先度がNormal
であることがわかりました。
バックアップをBackground
優先度で実行する方法はありますか?
データベースをUNCパスに(手動で、またはバックアップデバイスを作成して)バックアップできるので、それを試すことができますが、ディスクI/OをネットワークI/Oと交換することになります。
これは実際には質問(バックアップ操作のI/O優先度を微調整する方法)には答えませんが、バックアップを大幅に高速化し、他のアクティビティへの影響を減らすのに役立つ場合があります。
データベースのデータとログファイルを保持していないドライブにバックアップを書き込むことができるかどうか。回転ディスクベースのドライブでは、バックアップ操作によって、ライブデータを保持している領域(ページを読み取るため)とバックアップが書き込まれている領域(それらのページを保存するため)の間でヘッドが常に反転するわけではないため、パフォーマンスが大幅に向上します。
これは、特にすべてを保持するドライブまたはアレイが1つしかない場合に、バックアップ先のマシンに物理ドライブ(または冗長性のためにRAIDを使用できるように複数のドライブ)を追加することを意味する場合があります。データとログファイルが異なるディスク/アレイにあるが、バックアップを書き込むための3番目のドライブ/アレイがなく、追加できない場合、通常、ログを使用してドライブにバックアップを書き込む方が、それらを書き込むよりも高速です。データファイルを含むドライブに(異常な場合を除いて、ログファイルのアクティブなページがはるかに少ないため)。
いいえ、あるスレッドを別の優先度レベルに変更する方法はサポートされていません。 LiteSpeedやHyperBacなどを使用してバックアップを圧縮すると、書き込みIOの要件が軽減されます。
SQL Server 2008EnterpriseまたはSQLServer 2008 R2 Standard以降にアップグレードし、ネイティブバックアップ圧縮を利用します。これらのCPUサイクルの一部を、バックアップ時間を大幅に短縮するために交換します。