質問する質問する
 

回答済みDBへの接続と切断のタイミングについて

  • 2009年8月25日 13:11コンドル ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    SQL Server 2008とVB,C#2008を使って、
    業務アプリケーションを作成しています。
    Windowsフォームアプリケーションです。

    DBへの接続と切断のタイミングについて、
    どのようにすべきか迷いましたので、アドバイス頂けましたらと
    思い質問させて頂きました。
    (今は常時接続する設計にしています。)

    開発しているWindowsアプリは、
    9時から20時までずっと起動しているアプリケーションですが、
    常に操作されているものではありません。
    必要に応じて操作するので、5分おきくらいに、
    1分程度操作していると思われます。

    画面間で操作をするたびにDBアクセスが発生するようなものです。
    クライアントとサーバーは同一ネットワーク内に配置されており、
    クライアント数が少ないため、接続によるサーバーへの負荷は少ないと思います。

    このような場合、DB接続は、
    どの単位で切断するのがベターでしょうか?
    1操作単位(登録ボタンクリックなど)で接続と切断を繰り返すのが良いのでしょうか?
    それとも常時接続が良いのでしょうか?

    サーバーへの負荷も多少あるのでしょうし、
    ユーザーの1操作単位で切断すべきでしょうか?

    どのようにするのが良いのだろうかと、疑問に思ってしまいましたので、
    アドバイス頂けましたら、とても助かります。

    よろしくお願いいたします。

回答

  • 2009年8月25日 13:41佐祐理 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    SqlConnectionクラスの説明 にありますが、接続プールという機能があり、規定で有効になっています。
    この場合、明示的に切断しても内部的にはプールに返されるだけです。プールは一定時間使用されなかった場合に本当の切断処理が行われます。
    そのため切断タイミングに悩むようでしたら、必要なタイミングで接続→切断を行うように実装した方がいいです。
  • 2009年8月25日 13:57SurferOnWww ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    DB 接続の占有は可能な限り短時間で済ませる(クエリを発行する直前に Open して、操作が
    終わったら即 Close)のが基本です。

すべての返信

  • 2009年8月25日 13:41佐祐理 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    SqlConnectionクラスの説明 にありますが、接続プールという機能があり、規定で有効になっています。
    この場合、明示的に切断しても内部的にはプールに返されるだけです。プールは一定時間使用されなかった場合に本当の切断処理が行われます。
    そのため切断タイミングに悩むようでしたら、必要なタイミングで接続→切断を行うように実装した方がいいです。
  • 2009年8月25日 13:57SurferOnWww ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    DB 接続の占有は可能な限り短時間で済ませる(クエリを発行する直前に Open して、操作が
    終わったら即 Close)のが基本です。
  • 2009年8月25日 16:09コンドル ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    SqlConnectionクラスの説明 にありますが、接続プールという機能があり、規定で有効になっています。
    この場合、明示的に切断しても内部的にはプールに返されるだけです。プールは一定時間使用されなかった場合に本当の切断処理が行われます。
    そのため切断タイミングに悩むようでしたら、必要なタイミングで接続→切断を行うように実装した方がいいです。

    佐祐理様

    接続プールという機能があるのですね。
    知りませんでした。
    ご説明いただきありがとうございます。

    適切なタイミングで接続と切断を繰り返すように、
    実装いたします。

    ありがとうございました。
  • 2009年8月25日 16:10コンドル ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    DB 接続の占有は可能な限り短時間で済ませる(クエリを発行する直前に Open して、操作が
    終わったら即 Close)のが基本です。

    SurferOnWww様

    やはりそうですよね。
    細やかに接続、切断するべきなのだろうなと、
    うすうす感じておりました。

    ご回答いただき、納得いたしました。
    ありがとうございました。