web-dev-qa-db-ja.com

テスト環境での本番ワークロードのシミュレーション

SQL Server 2008 R2 Standard Editionを使用しています。一部のテーブルは断片化が進んでいます。デフラグによってパフォーマンスが向上するかどうか、プロセス中にテーブルやインデックスをロックする価値があるかどうかを確認します。したがって、テスト環境で完全バックアップを復元し、ライブ環境をシミュレートしたいと思います。
フォローするための最良の方法は何ですか?ライブ環境で一定期間行われているイベントをキャプチャするにはどうすればよいですか?これにはどのようなツールが利用できますか?
ありがとうございました

5

いくつかのオプションがあります。データベースに対する負荷のシミュレーションに役立つサードパーティのツールがあります。 SQL Query Stress のようなオープンでシンプルなユーティリティがあり、任意のクエリを任意の頻度で実行できます。

サーバー側トレースの実行とそれらのトレースの再生の組み合わせもあります。これは、トレースからスクリプトを収集するのと同じくらい簡単です(Danが上記で正しく指摘したように、プロファイラーGUIを使用してイベントをキャプチャするのではなく、サーバー側のトレースを使用してトレースをファイルにキャプチャします)。個々のクエリのパフォーマンスを重視し、同時実行性を重視しない場合は、個々のクエリのパフォーマンスについて。

並行性を掘り下げて、複数の角度からリアルタイムでワークロードを確認する必要がある場合は、分散再生機能の使用を検討してください。これにより、SQL Serverの任意のバージョンのトレースをポイントしてSQL Server 2005に戻し、SQL Serverの任意のバージョンに対してトレースを実行し、SQL Server 2005にも戻すことができます。JonathanKehayiasは ステップバイステップウォークスルー 分散再生のセットアップ方法。これにより、負荷を分散する複数のクライアントからの再生を構成できます。単一のプロファイラーの再生では、スケーリングすることはできません。 (注意してください-ツールはSQL Server 2012ツールであることがわかります。それを怖がらせないでください。そのときにツールが出ましたが、SQL Server 2008 R2環境を処理できます)

これはすべて言った-これにはどちらの方法にも複雑さがあります。 トレースを取る 再生するには、いくつかの要件と手順があります。 再生 同じ開始点から開始することを確認するために実行するいくつかの手順もあります。この複雑さは理解する価値があり、アップグレード準備テストの実行、アプリケーション全体のハードウェア変更の理解に役立ちます。 、など。 RMLユーティリティ を使用して、前および後のトレースを分析することもできます。これは、事柄がどのように改善または改善されなかったかを示すのに役立ちます。

インデックスの再構築が変更を加えたかどうかを確認したいだけの場合は、より簡単なテストも実行できます。大きな繰り返し可能な挿入を取り、その前後のみ実行できます。スキャン数の多いクエリとシーク数の多いクエリをいくつか実行して、その前後に実行できます。ただし、インデックスを再構築するとインデックスレベルの統計が再構築され、インデックスの再構築よりも多くの利点が得られる場合があるため、統計を再構築するよりも、統計を再構築する方がよいでしょう。再建。私は頻繁に「再構築」キャンプに陥る傾向がありますが、IOパフォーマンス、ワークロードパターンなどのハードウェアの変更は、必ずしも私にとって難しくて速いルールではありません。

4
Mike Walsh