connection
アプリケーションとDBとの間に確立されるセッションのこと
双方向チャネルである
DB 側も各接続のためにメモリや処理スレッドを割り当てる
割といろんなことをやる必要があるので
gpt-5.icon
2. connection が内部的に表すもの
アプリケーション側
DBドライバが作成したソケット(TCP)
認証済みの通信路
SQL を送信し、レスポンスを受け取るインタフェース
データベース側
セッション ID
ユーザー情報
トランザクション状態
一部のメモリやワーカー(プロセス/スレッド)
運用でよく出るトピック
2種類の制限がある
Linux kernelのポート数やファイルディスクリプタ数の上限
DB層での接続数の上限
その対策
コネクションを閉じ忘れるとプールが枯渇し、アプリがハングする
アイドル接続が増えるとメモリを食うし、DB によっては負荷増
一斉に大量の接続が開こうとする現象(再起動後など)
DB が落ちやすい
2種類ある?
WebApp Serverのreq処理中だけ、DBとの接続を永続化
reqのたびに新しく作るということ?
これのことを永続化って言えるのか
1回のreqの中で、複数個のSQLを打つ場合ってことか
流れ
WebApp Serverがリクエスト処理を開始
最初のDB接続後にDBオブジェクトのようなものをメモリ上に保持
req処理終了前にDBオブジェクトを破棄
接続をclose
常時接続を永続化する
アプリケーションのglobal空間に、DBとの接続したままのDB handler objectを保持しておき、破棄せずに使いまわす
mysqlでconnection確立時にやっていること
わかりやすい。最初に読むと良い
他ページへのリンクもある