パフォーマンス
このトピックの内容は、データ プロバイダーを使用するときにパフォーマンスを最大限に高めるのに役立ちます。
パフォーマンスを高めるための構成
パフォーマンスを向上させるには、次の方法でプロバイダーを構成します。
OLE DB リソースのプールによる接続開始時間の短縮
OLE DB リソースとプロバイダー接続をプールして、接続開始時間を短縮することにより、パフォーマンスが向上する可能性があります。 リソース プールは、Windows オペレーティング システムの一部である OLE DB サービス コンポーネントを使用して有効にします。 OLE DB リソース プールを有効にするには、OLE DB の初期化プロパティとレジストリを設定します。 詳細については、「 OLE DB リソース プール (https://go.microsoft.com/fwlink/?LinkID=180446)」を参照してください。
プロバイダー リソースのプールによる接続開始時間の短縮
接続プールは、接続開始時間を短縮する一方で、クライアント コンピューターでのメモリの利用を減らす、クライアント側の最適化です。 データ プロバイダーでは接続プールをサポートしています。 OLE DB データ ソース初期化文字列 (Connection Pooling=True) を使用してプールを指定できます。 また、データ ソース ウィザードの [詳細設定] ダイアログおよびデータ リンクの [すべて] ダイアログを使用してプールを構成できます。
プロバイダーは、Max Pool Size プロパティに基づいて接続のキャッシュを維持します。 既定のプール サイズは 100 接続 (Max Pool Size=100) ですが、データ ソース ウィザードまたはデータ リンクの [すべて] ダイアログを使用して調整できます。 "最大プール サイズ" プロパティに上限はありません。 "最大プール サイズ" プロパティに 0 未満の値を構成すると、既定値の 100 が使用されます。 オプションとして、クライアント側プールを使用して接続を確立するまで待機するようデータ プロバイダーに指示する秒数を指定できます。 プールのすべての接続が使用中でタイムアウトまでの時間が経過すると、データ プロバイダーはデータ コンシューマーに対してエラー ("接続が利用できません") を返します。 既定値は 15 秒 (Connect Timeout=15) ですが、データ ソース ウィザードまたはデータ リンクの [すべて] ダイアログを使用して調整できます。 [接続のタイムアウト] プロパティに上限はありません。 クライアント側接続プールで開いている接続を無期限に待機するようデータ プロバイダーに指示するには、-1 を指定します。
データの取得時に行セット キャッシュを最適化する
RowSetCacheSize プロパティを使用すると、データ プロバイダーは DB2 から行をプリフェッチすると同時に、行を処理してデータ コンシューマーに返します。 この機能によって、マルチプロセッサ コンピューターおよびマルチコア コンピューターにおける一括読み取り専用処理のパフォーマンスが向上する場合があります。 このプロパティの既定値は 0 です (RowsetCacheSize=0)。この場合、オプションのプリフェッチ機能が "オフ" になります。 推奨の設定値は 10 から 100 ですが、最初は 10 に設定することすることをお勧めします。この値は、データ ソース ウィザードまたはデータ リンクの [すべて] ダイアログを使用して調整できます。 このプロパティより、データ プロバイダーは指定された行バッチ数までプリフェッチし、データ プロバイダーの行セット キャッシュに保存します。 行バッチのサイズは、コンシューマーによって指定された OLE DB の IRowset::GetNextRows インターフェイス上の cRows の値に基づいて自動的に決定されます。
実行まで準備コマンドとパラメーターの送信を遅延する
Defer Prepare を使用すると、データ プロバイダーはパラメーター化された INSERT、UPDATE、DELETE、SELECT コマンドの処理を最適化します。 このオプションは ADO.NET 接続文字列または OLE DB データ ソース初期化文字列 (Defer Prepare=True) を使用して指定できます。 また、データ ソース ウィザードの [詳細設定] ダイアログおよびデータ リンクの [すべて] ダイアログを使用してプールを構成できます。 INSERT、UPDATE、および DELETE コマンドについては、データ プロバイダーは prepare、execute、および commit コマンドをリモート データベースへの 1 つのネットワーク フローに結合します。 SELECT コマンドについては、PREPARE および EXECUTE コマンドを 1 つのネットワーク フローに結合します。 これによってネットワーク トラフィックが最小限に抑えられると共に、多くの場合、全体的なパフォーマンスが向上します。
DB2 シャドウ カタログからのスキーマ情報の取得
"シャドウ カタログ" プロパティは、DB2 シャドウ カタログからスキーマ情報を取得するようにデータ プロバイダーに指示します。 DB2 管理者は、テーブル、列、主キー、およびインデックスのスキーマ情報が含まれるようにシャドウ カタログを定義することができます。 すべてのデータ コンシューマーは、デザイン時にこのスキーマ情報を使用します。 一部のデータ コンシューマーは実行時にこの情報を使用します。 書き込み (ステートメントの実行の作成または変更) を行っているときにロックのために DB2 スキーマ カタログにアクセスできなくなることがあります。 また、既定の DB2 スキーマが大きくなると、デザイン時および実行時のデータ コンシューマーの操作に遅延が発生することがあります。 シャドウ カタログは、スキーマ取得操作を実行するときの競合を減らし、パフォーマンスを向上させることができます。
複数の行を 1 つの作業単位で送信
データ プロバイダーでは、OLE DB IRowsetFastLoad インターフェイスがサポートされます。Integration Services などのコンシューマーでこのインターフェイスを利用することで、最適化されたバッチで複数の INSERT ステートメントを実行できます。 これにより、TCP/IP ネットワーク パケットの使用効率が向上し、全体的なパフォーマンスが改善されます。 Business Intelligence Developer Studio のパッケージ デザイナーを使用して Integration Services パッケージ内でデータ フローの OLE DB 変換先を構成する場合に、RowsetFastLoad を選択できます。 IRowsetFastLoad インターフェイスは、DB2 に挿入する場合にサポートされます。 詳細については、「Integration Services OLE DB 変換先のカスタム プロパティ のアクセス モード (https://go.microsoft.com/fwlink/?LinkId=241518)」を参照してください。
実行時間の長いクエリを中断するコマンド タイムアウト
データ プロバイダーのコマンド タイムアウト プロパティを使用することで、パフォーマンスに悪影響を及ぼす可能性のある実行時間の長いクエリを自動的に中断することができます。 OLE DB 行セット DBPROP_COMMANDTIMEOUT の既定値は 0 で、タイムアウトはありません。
コマンド タイムアウトの値は複数のコンシューマーから指定できます。 データ プロバイダーの OLE DB 行セットの DBPROP_COMMANDTIMEOUT プロパティを使用することで、パフォーマンスに悪影響を及ぼす可能性のある実行時間の長いクエリを自動的に中断することができます。 Integration Services および Analysis Services については、Business Intelligence Development Studio の [データ ソース クエリのタイムアウト] オプションによってこのプロパティが公開されます。 Reporting Services については、Business Intelligence Development Studio の [データセット プロパティのタイムアウト] オプションによってこのプロパティが公開されます。 レプリケーションとクエリ プロセッサは、 @optname=query sp_serveroptionタイムアウトを通じてこのプロパティを公開します。
パフォーマンスの計測
パフォーマンスを計測できるように、データ プロバイダーにはパフォーマンス カウンターが用意されています。 既定では、パフォーマンス カウンターは無効になっています。 次のレジストリ キーの値を 1 に変更することで、有効にすることができます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Host Integration Server\Data Integration\UpdateCounters = 1
データ プロバイダーのパフォーマンス カウンターでは、開いている接続数、開いているステートメント数、送受信されるパケット数とバイト数、ホスト (DB2 サーバー) の平均処理時間、コマンド実行数、データ フェッチ数、トランザクションのコミット数とロールバック数に関する情報がキャプチャされます。 詳細については、「 パフォーマンス カウンター (https://go.microsoft.com/fwlink/?LinkID=119211)」を参照してください。