私は数人のソフトウェア開発者と会議を行っていましたが、アプリケーションコードでデータベース接続をできるだけ早く閉じるように勧められましたか?アプリケーションで接続を開いたままにしておくことの害は何ですか?
データベースの単一のテーブルからデータを読み取っていました
バスの座席のように考えてください。
接続を開くと、それらの座席がいっぱいになります。最終的に、バスは満員になり、乗客を受け入れることができなくなります(またはデータベース接続をさらに開くことができなくなります)。バスが定員に達したために乗客を拒否しなければならないときはいつでも、その乗客は別のバスが来るのを待たなければなりません。
接続が完了したら接続を閉じることで、より多くの接続のためのスペースを解放できます。つまり、データベースと対話する必要のあるより多くのプログラムが、接続が解放されるのを待つことなく、必要なことを実行できます。接続を閉じないということは、データベースが周りにあるすべての接続をどう処理するかを理解する必要があることを意味します。これは、データベースが新しい接続を開くのと同じ速さで接続を閉じない場合に問題を引き起こす可能性があります。
これは、接続プールを使用しているときに変更されます(以下のコメントを参照)。そのような状況では、プールで接続の開始と終了を処理する必要があります。接続をプールしていない場合は、必要以上に接続を開いたままにしておくと、リソースが無駄になります。