私は約250GBの大きなデータベースを持っており、最近、システムを新しいマシンに転送する必要がありました。
古いマシン:
新しいマシン:
ご覧のとおり、新しいサーバーは、古いサーバーで実行していたのと同じパフォーマンスでシステムを実行するのに十分なはずですが、低速です。同じProcsを実行すると、実行に2〜5倍かかる場合があります(状況は異なるようです)。
私が問題を解決しようとしたこと:
古いサーバーでデタッチし、新しいサーバーにアタッチすることにより、データベースが転送されました。
これ以上必要な情報があれば、私が提供できることを嬉しく思います。
そして、最後に、私はDBAではありません。私は、本来すべきでないタスクを担当するプログラマです。
同じProcsを実行すると、実行に2〜5倍かかる場合があります(状況は異なるようです)。
sp_recompile 'procedureName'
を使用して、ストアドプロシージャを再コンパイルする必要があります。これは 移行後の手順 の1つである必要があります。
もう1つ注意すべきことは、より多くの最大メモリを使用する場合(新しいサーバーでより多くのRAM)があるため)、テストを調べて TF2335を有効にする
また、サーバーの電源オプションを確認してください。高性能に設定する必要があります。
@Philに同意します。VM管理者に問い合わせて、 ホストマシンがリソースの観点からオーバーコミットされているかどうか かどうかを確認します。 VMWareには バルーンドライバー(pdfホワイトペーパー) のようなものがあります。Hyper-Vの場合は SQL Serverの実行Hyper-V動的メモリを使用 ホワイトペーパー。
同じサーバー上の新しいSSDにファイルを移動するだけで、デタッチ/アタッチ後のデータベースは非常に遅くなりました。同じクエリを数回実行した後でも、キャッシュされたクエリプランやその他のホット/コールドの問題とは関係ありません。
最終的に、私たちは すべてのインデックスを再構築 以下のコードを使用して、すべてが再びうまくいきました:
Exec sp_msforeachtable 'SET QUOTED_IDENTIFIER ON; ALTER INDEX ALL ON ? REBUILD'
SQLサーバーが古いサーバーで持っていたはずのキャッシュプランを再構築できるようになるまで、サーバーは遅くなります。