• ベストアンサー

データベースに接続したままの負荷について

データベースに一度接続したら、最後に切断するのが普通(?)だと思います。しかし接続する際にサーバにかかる負担が大きいとどこかのサイトで見ました。 もし、1日のアクセスが30万件あったとして、毎回接続と切断をするとかなり負荷がかかると思うのですが、その際に一番最初にデータベースを接続して、切断しないままでいることは可能なのでしょうか?また、もし接続したままでいるといくらか時間が経った後に自動的に切断されてしまうということはあるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mahny
  • ベストアンサー率74% (57/77)
回答No.1

>切断しないままでいることは可能なのでしょうか? 可能です。 WEBシステム開発をしていますがエラーでも出ない限り コネクションを切る(破棄する)方が稀です。 ある程度決まった数のコネクションをWEBアプリとDB間で維持し続け、 要求があったプログラムにコネクションを渡し、 使い終わったら再びプログラムからコネクションを受け取る。 この維持することをプーリング(コネクションをプールする)と言っています。 > 自動的に切断されてしまうということはあるのでしょうか? あります。 DB側の自動切断(タイムアウト)であったり、通信障害であったり。 ですので、プールしているコネクションを他のモジュールに渡す前に 適当なクエリを送る等して生存確認してから渡すようにしています。 MySQLのタイムアウトは初期設定で8時間…だったかな。(自信なし)

hana43
質問者

お礼

ありがとうございます。 データベースから切断なんて稀なのですね・・・。基本的に切断するものだと思っていたので・・・。 ということは、一度データベースにコネクションを張ってそれを使い回せばいいということですね。 Apache::DBIがあると思うのですが、それについて詳しいサイトとかご存知でしたら教えていただけないでしょうか?私も調べているのですが、なかなか詳しく書かれているサイトが見つからないので・・・。