Data Provider for .NET Guide (v11)

パフォーマンスに関する考慮点

アプリケーションのパフォーマンスは、接続文字列オプション、および、いくつかのデータ プロバイダー オブジェクトのプロパティに設定された値の影響を受けます。

パフォーマンスに影響を与える接続文字列オプション

Encrypt:データ暗号化は、データの暗号化と復号化で必要となる追加オーバーヘッド(主に CPU 使用)のため、パフォーマンスに悪影響を与えます。

Max Statement Cache Size:アプリケーションが使用する全プリペアド ステートメントをキャッシュすれば、最高のパフォーマンスを提供できるように思われます。しかし、この手法では、接続プールを使ってステートメント キャッシングを実装した場合、データベース サーバーのメモリに負担をかける結果になります。この場合、プールされた接続はそれぞれステートメント キャッシュを持ち、アプリケーションが使用する全プリペアド ステートメントを含むことになります。キャッシュされた全ステートメントは、データベース サーバーのメモリにも保持されます。

Pooling:データ プロバイダーが接続プールを使用できるようにしている場合、パフォーマンスに影響する以下の追加オプションを定義できます。

Schema Options:ある種のデータベース メタデータを返すことは、パフォーマンスに影響を与えます。アプリケーションのパフォーマンスを最適化するため、データ プロバイダーは、パフォーマンスに悪影響を与えるプロシージャ定義やビュー定義などのデータベース メタデータを返さないようにします。アプリケーションがこれらのデータベース メタデータを必要とする場合は、明確にそれを返すよう要求する必要があります。

複数の種類の除外されたメタデータを返すには、名前をカンマ区切りリストで指定するか、返したい列コレクションの 16 進値の合計を指定します。たとえば、プロシージャ定義とビュー定義を返すには以下のいずれかを指定します。

パフォーマンスに影響を与えるプロパティ

StatementCacheBehavior:アプリケーションがその存続期間中にプリペアド ステートメントを複数回再使用する場合、ステートメント キャッシュを使用することによってパフォーマンスに影響を及ぼすことができます。このプロパティは、プリペアド ステートメント(Command オブジェクトのインスタンス)がステートメント キャッシング中にどのように処理されるかを決定します。

Cache に設定すると、プリペアド ステートメントはステートメント キャッシュに含められます。

Implicit に設定して Statement Cache Mode 接続文字列オプションに Auto を設定すると、プリペアド ステートメントはステートメント キャッシュに含められます。

DoNotCache に設定すると、プリペアド ステートメントはステートメント キャッシュから除外されます。

特定のステートメントをキャッシングすることによるパフォーマンスへの影響を判断するには、接続統計情報を使用できます(「接続統計情報によるパフォーマンスの分析」を参照してください)。


Entity Framework データ プロバイダーでの接続文字列の使用

ADO.NET Entity Framework の使用