1

データベースへの接続のパフォーマンスについて疑問に思っています。各クエリ間でデータベース接続を閉じても問題ありませんか、それとも完了するまで開いたままにしておくべきですか? 接続の開閉の速度ペナルティは高いですか?

4

3 に答える 3

6

ADO.NET は、接続を「プール」します。接続を閉じると、実際には閉じられませんが、プールに配置されます。同じ接続文字列で新しい接続が要求されると、プールからの接続が再利用されます。プールは非常に高速であるため、実際には、接続を開くのは事実上無料です。

ベスト プラクティスは、必要なときに接続を開き、次の直後に閉じることです。

using (var db = new SqlConnection(connectionString)) {
    ... retrieve data ...
}

そのようにコーディングすれば、接続の存続期間についてまったく心配する必要はありません。

于 2012-06-24T15:47:39.120 に答える
2

接続の作成、開始、および終了に関連するオーバーヘッドがあるため (接続プールが使用されている場合でも、この一部は発生します)、理想的には、一度接続し、すべてのデータを取得してから、接続を閉じて破棄する必要があります。using接続を必要以上に長く開いたままにしないように、必ずこのアプローチを使用する必要があります。

于 2012-06-24T15:48:02.807 に答える
1

私の経験では、接続の開閉は良いのですlow volume applicationが、high volume applicationでは、接続の開閉にかかるコストが大きくなります。したがって、コンテキストに完全に依存しています。大規模なアプリケーションで作業している間、接続プーリングがうまくいきません。ADO.NET確実に接続プーリングを処理します。

于 2012-06-24T15:57:26.593 に答える