に.NET 2から切り替えた後、私たちは、アプリが大幅に遅くなったサイトの減速やエラー.NET 4
- 4に2から、従来のWebアプリケーションの.NETバージョンを変更し、
我々今、いくつかのケースでは、このエラーを取得する:
エラーがSELECT
QにスローされSystem.Data.SqlClient.SqlException: Transaction (Process ID 85) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
検索/ルックアップ・タイプの操作を実行している間は使用できません。 (更新タイプ操作ではない)。
レガシーアプリはかなり古いですNHibernateはバージョン2.2を実行しています。そのパッケージは多くのクエリを生成します。最新のバージョン3.2にアップグレードしてもスピードは向上しませんでした。それはエラーを取り除くように見えます。しかしそれは他のバグを引き起こすので、我々は主要な分析なしでアップグレードすることはできません&テスト。
最後に、私の質問:
任意の提案ですか?
私たちは、SQLクエリに
WITH (NOLOCK)
を追加し、エラーが去っていきました。しかし、これが他の問題を引き起こす可能性はありますか(このエラーの原因となるユーザーの操作中に更新が行われないとすれば、トランザクションが検索に関係する理由はわかりません)。
私たちはこのアプリには非常に新しく、別の開発者から引き継いだものです。だから、どんな助けもありがたいです。たとえデバッグのしかたをしているだけですらあります。私たちは多くのことを試していますが、NHibernateにはあまりよく知られていませんので、特にNHibernateと.NETバージョンの洞察はすばらしいでしょう。
? –
ダビデは、私は、インデックスを見てstackoverflowのからいくつかのクエリを実行しましたが、啓発何も表示されません。私は何を探していますか?ありがとう。 – royappa
私はいくつかのことを追加する必要があります。最初に、データベースはアップグレードされていない別のサーバー上にあります。次に、1つのテーブルに1つのフィールド(いくつかのユーザー設定を格納する文字列フィールド)を追加しました。そのテーブルにはIDフィールドのインデックスしかありませんでした。 – royappa