実稼動サーバーのチューニング負荷の軽減
データベース エンジン チューニング アドバイザーは、クエリ オプティマイザーを使用してワークロードを分析し、チューニングに関する推奨事項を作成します。 実稼働サーバー上でこの分析を実行すると、サーバーの負荷が増し、チューニング セッション中のサーバーのパフォーマンスが低下することがあります。 実稼働サーバーに加えてテスト サーバーを使用することで、チューニング セッション中のサーバーの負荷への影響を小さくすることができます。
データベース エンジン チューニング アドバイザーでテスト サーバーを使用する方法
これまでは、テスト サーバーを使用するために、実稼働サーバーからテスト サーバーにすべてのデータをコピーし、テスト サーバーをチューニングして、実稼働サーバーに推奨設定を実装する方法を使用してきました。 この処理により、実稼働サーバーのパフォーマンスに影響が及ぶことはありませんが、これは最善の解決策ではありません。 たとえば、大量のデータを実稼働サーバーからテスト サーバーにコピーする場合、非常に時間がかかり、多量のリソースが使用される可能性があります。 また、テスト サーバーのハードウェアが、実稼働サーバーに配置されているハードウェアほど優れていることはめったにありません。 チューニング処理は、クエリ オプティマイザーに依存し、生成される推奨設定は基になるハードウェアに部分的に基づきます。 テスト サーバーと実稼働サーバーのハードウェアが同一でない場合は、データベース エンジン チューニング アドバイザー推奨品質が低下します。
これらの問題を回避するには、チューニング負荷の大部分をテスト サーバーにオフロードして、運用サーバー上のデータベースを調整データベース エンジン チューニング アドバイザー。 このチューニングは、実際には実稼働サーバーからテスト サーバーにデータがコピーされずに、実稼働サーバーのハードウェア構成情報を使用して行われます。 データベース エンジン チューニング アドバイザーは、実稼働サーバーからテスト サーバーに実際のデータをコピーしません。 メタデータと必要な統計だけがコピーされます。
次の手順は、テスト サーバーでの実稼働データベースのチューニング処理の概要を示しています。
テスト サーバーを使用するユーザーが、両方のサーバーに存在することを確認します。
開始する前に、テスト サーバーを使用して実稼働サーバー上のデータベースをチューニングするユーザーが、両方のサーバーに存在することを確認します。 このためには、テスト サーバーにユーザーとそのユーザーのログインを作成する必要があります。 使用者が両方のコンピューターの sysadmin 固定サーバー ロールのメンバーであれば、この手順は不要です。
テスト サーバーでワークロードをチューニングします。
テスト サーバーでワークロードをチューニングするには、XML 入力ファイルと dta コマンド ライン ユーティリティを併用する必要があります。 XML 入力ファイルで、 TestServer サブ要素にテスト サーバーの名前を指定し、 TuningOptions 親要素の下の他のサブ要素の値も指定します。
チューニング処理中、データベース エンジン チューニング アドバイザーによって、テスト サーバーにシェル データベースが作成されます。 データベース エンジン チューニング アドバイザーでは、このシェル データベースを作成してチューニングするために、次の目的で実稼働サーバーに呼び出しが行われます。
データベース エンジン チューニング アドバイザーは、実稼働データベースからテスト サーバー シェル データベースにメタデータをインポートします。 このメタデータには、空のテーブル、インデックス、ビュー、ストアド プロシージャ、トリガーなどが含まれます。 これにより、テスト サーバーのシェル データベースに対してワークロード クエリを実行できるようになります。
データベース エンジン チューニング アドバイザーは、クエリ オプティマイザーがテスト サーバー上のクエリを正確に最適化できるように、実稼働サーバーから統計をインポートします。
データベース エンジン チューニング アドバイザーは、プロセッサの数と使用可能なメモリを指定するハードウェア パラメーターを運用サーバーからインポートして、クエリ プランを生成するために必要な情報をクエリ オプティマイザーに提供します。
データベース エンジン チューニング アドバイザーテスト サーバー シェル データベースのチューニングが完了すると、チューニングに関する推奨事項が生成されます。
テスト サーバーのチューニングによって作成された推奨設定を実稼働サーバーに適用します。
次の図は、テスト サーバーと実稼働サーバーのシナリオを示しています。
注意
テスト サーバーのチューニング機能は、データベース エンジン チューニング アドバイザー グラフィカル ユーザー インターフェイス (GUI) ではサポートされていません。
例
最初に、チューニングを実行するユーザーが、テスト サーバーと実稼働サーバーの両方に存在することを確認します。
ユーザー情報がテスト サーバーにコピーされたら、データベース エンジン チューニング アドバイザー XML 入力ファイルでテスト サーバー チューニング セッションを定義できます。 次の XML 入力ファイルの例は、テスト サーバーを指定して、データベース エンジン チューニング アドバイザーを使用してデータベースをチューニングする方法を示しています。
この例では、 MyDatabaseName
データベースが MyServerName
でチューニングされています。 Transact-SQL スクリプト は、 MyWorkloadScript.sql
ワークロードとして使用されます。 このワークロードには、 MyDatabaseName
に対して実行するイベントが含まれています。 このデータベースに対し、クエリ オプティマイザーによって行われるほとんどの呼び出しは、チューニング処理の一部として行われ、 MyTestServerName
に存在するシェル データベースによって処理されます。 シェル データベースは、メタデータと統計で構成されます。 この処理により、チューニングのオーバーヘッドがテスト サーバーにオフロードされます。 データベース エンジン チューニング アドバイザーこの XML 入力ファイルを使用してチューニングの推奨事項を生成する場合は、インデックスのみを考慮し (<FeatureSet>IDX</FeatureSet>
)、パーティション分割を行わず、既存の物理設計構造を にMyDatabaseName
保持する必要はありません。
<?xml version="1.0" encoding="utf-16" ?>
<DTAXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://schemas.microsoft.com/sqlserver/2004/07/dta">
<DTAInput>
<Server>
<Name>MyServerName</Name>
<Database>
<Name>MyDatabaseName</Name>
</Database>
</Server>
<Workload>
<File>MyWorkloadScript.sql</File>
</Workload>
<TuningOptions>
<TestServer>MyTestServerName</TestServer>
<FeatureSet>IDX</FeatureSet>
<Partitioning>NONE</Partitioning>
<KeepExisting>NONE</KeepExisting>
</TuningOptions>
</DTAInput>
</DTAXML>
参照
テスト サーバー XML 入力ファイルリファレンスの使用に関する考慮事項(データベース エンジン チューニング アドバイザー)