SQL ServerでのConnectionPooling
[.Net][DataBase]SQL ServerでのConnectionPooling
先日はOracleでコネクションプーリングを使った場合の切断時間をみた。
今回はSQL-Serverで同様の調査をした。
接続文字列は
Application Name=[AppName];Data Source=[Server];Initial Catalog=[DBName]; User ID=[UserID];Password=[Password];Connection Timeout=[Timeout]
こんな感じで何も指定していない。
この状態でSQLServerのセッションをみているとアイドル状態になって7分程度?で自動的に接続が切断される。
どうやらOracleとは挙動がちがいますね。
接続文字列をみると
名前 | 規定値 | 説明 |
---|---|---|
Connection Lifetime | 0 | 接続がプールに返されるときに、作成時刻と現在の時刻が比較され、この時間 (秒単位) が Connection Lifetime で指定された値を超えていた場合は、接続が破棄されます。この機能は、クラスタ構成の場合に、実行中のサーバーとオンライン状態になったばかりのサーバーとの間で負荷分散を強制的に行うときに役立ちます。値が 0 の場合は、プールされた接続のタイムアウトには最大値が設定されます。 |
といった感じで最大値が設定されますとある。が、これが何秒なのかはなぞ・・・とりあえず有限な値であるのは確認。
あとSQLConnectionにはプール内の接続を破棄するメソッド「ClearAllPool」とかが備わっている。これはOracleにもほしいような気がします。