私の同僚は、アプリケーションに対して単一のデータベース接続を開く方が、プールを使用して接続を開いたり閉じたりするよりもはるかに優れて高速であると主張しています。
彼には ApplicationStart メソッドがあり、Application('db')
この接続をアプリ全体で開始して維持します。このアプリには、主に読み取り専用データが含まれています。
どうすれば彼を説得できますか?
私の同僚は、アプリケーションに対して単一のデータベース接続を開く方が、プールを使用して接続を開いたり閉じたりするよりもはるかに優れて高速であると主張しています。
彼には ApplicationStart メソッドがあり、Application('db')
この接続をアプリ全体で開始して維持します。このアプリには、主に読み取り専用データが含まれています。
どうすれば彼を説得できますか?
それは、ここでの「アプリケーション」が何であるかに大きく依存します。これが単一のスレッドで動作し、シーケンシャルに処理を行うクライアント アプリケーションである場合、率直に言って、どちらの方法でも目立った違いはありません。そのシナリオでは、プールを使用すると、基本的に 1 アイテムのプールになり、プールから接続を開くのは事実上瞬時になります (そして、ネットワーク IO と比較すると確かに目立ちません)。そのシナリオでは、シナリオを変更したときに想定を回避できるため、組み込みのプーリングを使用することをお勧めします。
ただし、アプリケーションが複数のスレッドを使用する場合、または他のメカニズムを介して一度に複数のことを行う場合 ( async
) など、単一の接続を使用するのは非常に悪いことです。それは完全に失敗するか、接続を同期する必要があり、これにより深刻な制限が課せられます。サーバー側のアプリケーション (あらゆる種類の Web アプリケーション、WCF サービス、SOAP サービス、またはソケット サービス) は、彼のアイデアに対して非常に悪い反応を示すことに注意してください。
おそらく、彼を説得する主な方法は、単純に、それを証明するように頼むことです。この違いを示す再現可能なテスト/デモンストレーションを依頼してください。