AspNet Webアプリケーションには、OpenSessionInViewパターンでNHibernateを使用しています。
ADO接続(SqlServer)を使用して、ページにアクセスするたびに異なるデータベースにログインします。そのためには、「ページの読み込み」ごとに接続を開き、挿入を実行してから接続を閉じる必要がありますか、それともすべてのリクエスト間で同じ接続を共有し続けることができますか?
ロックと同時アクセスについてはどうですか?このデータベースにのみ挿入します。
AspNet Webアプリケーションには、OpenSessionInViewパターンでNHibernateを使用しています。
ADO接続(SqlServer)を使用して、ページにアクセスするたびに異なるデータベースにログインします。そのためには、「ページの読み込み」ごとに接続を開き、挿入を実行してから接続を閉じる必要がありますか、それともすべてのリクエスト間で同じ接続を共有し続けることができますか?
ロックと同時アクセスについてはどうですか?このデータベースにのみ挿入します。
はい、私はそうしopen --> insert --> close.
ます理由は、SQL 接続 (およびドライバーによってはほとんどの DB 接続) がプールされているため、新しい接続を開くことは、プールから接続を取得することを実際に意味するためです。プール内の接続)。一方、接続を開いたままにしておくと、リクエストごとにこの接続オブジェクトへのアクセスを同期する必要があるため、大量の同時実行の問題が発生します。つまり、悪夢。実際、リクエストがブロックされ、処理が大幅に遅くなります。
繰り返しますが、実際にはパフォーマンスを向上させているわけではなく (まったく逆に)、アプリを複雑にしています。