2012-05-10 10 views
0

私たちはAspNet Webアプリケーション用にOpenSessionInViewパターンでNHibernateを使用しています。OpenSessionInViewパターン、ADOとパフォーマンス

ADO接続(SqlServer)を使用すると、ページにアクセスするたびに別のデータベースにログインする必要があります。そのためには、「ページ読み込み」ごとに接続を開いたり、挿入を実行したり、接続を閉じたり、すべての要求で同じ接続を共有したりする必要がありますか?

ロックと同時アクセスはどうですか?このデータベースにのみ挿入します。

答えて

1

はい、私は行こうと思いますopen --> insert --> close.ドライバに応じてSQL接続とほとんどのDB接続がプールされているため、新しい接続を開くことは実際にはプールから接続を取得することを意味しますプール内の接続が不足しています)。一方、開いている接続を保持していると、すべての要求に対してこの接続オブジェクトへのアクセスを同期させる必要があるため、同時実行の問題が発生します。 A 悪夢、言い換えれば、実際には、あなたはになりますので、のリクエストがブロックされ、処理が大幅に遅くなります。

この場合も、パフォーマンスは改善されていません。反対に、あなたのアプリは複雑です。

関連する問題