2017-09-05 24 views
-1

私はいくつかのデータベースに8 TBのSQL Server 2008を導入しました。 私はそれぞれのデータの約85%を削除し、ディスク容量を回復しなければなりません。 すべてのUSED_SPACEの最終SUMは1.2 TBです。SQL Serverのパフォーマンスを向上させるDBCC SHRINKFILE

このSHRINKFILEプロセスは、PERデータベースの7時間のメンテナンスウィンドウ内に収まる必要があります。

ただし、それぞれのDBCC SHRINKFILEは実行に数時間かかります。たとえば、800 GBのデータベースを120 GBに縮小すると、15時間以上かかります。

残念ながら、これは私のメンテナンスウィンドウを超えており、データベースが破損しないことを望んでいるプロセスを強制終了させて​​しまいます(その後DBCC CHECKDBは正常です)。

DBCC SHRINKFILEは、利用可能なディスクI/OやCPUリソースを十分に活用していないことがわかります。

たとえば、完全なサイズのデータ​​ベースファイルを数時間で1つのディスクから別のディスクにコピーすることは可能ですが、SHRINKFILEプロセスはかなりの時間がかかります。

注:データベースはすべてSIMPLE回復モードに設定され、AUTO_SHRINKはオフです。

はい、多くの人がインデックスを破壊するとは言いません。SHRINKFILEが完了すると、インデックスを再構築する予定です。

SHRINKFILEコマンドまたはその他のソリューションの優先度を上げる方法はありますか?私が検討しているいくつかのオプションは次のとおりです。SHRINKFILEを実行する前の同じセッションで、

  • SET DEADLOCK_PRIORITY HIGHがあります。 (しかし、これは役に立ちますね)
  • 新しいデータベースを作成し、すべてのデータをテーブルごとにコピーします。

助けてください。

+2

これは本当に**プログラミング**(このサイト*は** **すべてについて**です)とは関係ありませんが、DB管理を伴うので、ここで話題にはならず、[dbaに属します。 stackexchange.com](http://dba.stackexchange.com) - 議決権を行使すること。 –

+0

あなたはそうです。それを動かす方法はありますか?それとも新しいものを作るべきでしょうか? – Don

+0

システムによってマイグレーションされます。マイグレーションには合計で5票の投票があります。 –

答えて

0

DBCC SHRINKFILE id単一スレッド操作であり、サーバーで時間がかかりすぎます。周り

作品:(これはデータとインデックスを手配しますAS)まずDBCC SrinkFilesを行い、その後MAXDOP *で

をインデックスを再構築。

Maxdop - クエリで使用できるスレッドはありません。

+0

これを試しましたが、収縮時間は短縮されませんでした。すべてのデータページを最適化するように見えます。データベースへの接続によるアクティビティが縮小プロセスをほぼ中断しているように見えました。これまでのところ、ANY接続を防止するのが唯一の処置です。 – Don

関連する問題