クラシック ASP では、データベース接続を Session オブジェクトに保存できますか?
-
01-07-2019 - |
質問
データベース接続を Session オブジェクトに保存できますか?
解決 4
このリンクから http://support.microsoft.com/default.aspx/kb/243543
データベース接続をセッションに保存しないでください。
私が理解しているところによると、そうする場合、同じユーザーに対する後続の ASP リクエストは同じスレッドを使用する必要があります。
したがって、ビジーなサイトがある場合は、「あなたの」スレッドがすでに他の人によって使用されている可能性が高いため、そのスレッドが使用可能になるまで待つ必要があります。
これにさらに多くのユーザーを掛け合わせると、全員が他のユーザーのスレッドを待ち、サイトの応答性が低下することになります。
他のヒント
通常、そうすることはお勧めできません。優れたヘルパー関数/クラスを使用して、Application 変数の接続文字列を使用する方法が非常に推奨されます。 ここ 何かの参考です。 (フィッシングサイトにリンクしているため、デッドリンクは削除されました)
そうすることでアプリケーションがシングルスレッド化されてしまい、悪いことになることを思い出したようです。
一般に、私はオブジェクトをアプリケーション変数に保存しません (もちろんセッション変数にも保存しません)。
データベース接続に関しては、絶対にダメです。その必要はまったくありません。
データベースとの通信に ADO を使用している場合、 同じ接続文字列 (はい、ぜひ保管してください) これ すべてのデータベース接続に対して、「接続プーリング」がバックグラウンドで実装されます。これは、接続を解放しても、実際には破棄されず、同じ接続を必要とする次の人のために脇に置かれることを意味します。したがって、次回同じ接続をリクエストするときは、明示的に作成してインスタンス化する必要はなく、「既成の」接続が取り出されます。これは非常に優れた効率の向上です。
CJM が述べているように、接続を Session オブジェクトに保存する必要はありません。接続プーリングの方がはるかに優れています。