1

linq to sql クラスを使用してユーザーの情報を取得する方法があります。このメソッドは、既存のストアド プロシージャを呼び出す linq ステートメントを使用して 3 つのクエリを実行します。これは、linq ステートメントをどのようにレイアウトしているかの例です。

            using (var db = new TestDataContext(connection)))
            {
                var user = db.proc_UserInfo(userId);

                foreach (var x in user)
                {
                    string FullName = x.FirstName + " " + x.LastName;
                    string Address = x.Addr1;
                    string City = x.City;                        
                }
            }

このメソッドは、jquery ajax リクエストから起動する Web API コントローラーを介して呼び出されます。それは正常に動作しますが、Ajaxリクエストを作成するユーザーでいっぱいのドロップダウンリストを急いで変更して負荷をかけると、十分に速くできるかどうかに気づきます。データベースへのクエリのバッチがキャンセルされ、呼び出しが行われるようです数分間中断され、次のクエリがタイムアウトになり、null オブジェクトが返されます。これらのクエリが返すのではなく、数行のデータが返されることに注意してください。私はまだ何が起こっているのかを理解しようとしており、提案を受け付けています。前もって感謝します。

4

1 に答える 1

1

まず、人々はもう少し情報が必要かもしれないと思います。データベースの種類は SQL Server だと思いますが、バージョンはまだ記載されていません。いずれにせよ、それはいくつかのことかもしれません。AJAX 呼び出しは http リクエスト / ポストとして実行されるため、IIS タイムアウトやその他のさまざまな IIS 制限が存在する可能性があることに注意してください。また、あなたの呼び出しは非同期ですか?Jqueryには、確認したい設定がいくつかあります。テーブルのロックは SQL Server も可能です。また、ブラウザの RAM / w3wp の使用状況をチェックして、リソースが不足していないことを確認してください。

まず、SQL プロファイラーを実行して何が起こっているかを確認し、次にそれらのクエリの実行計画を確認することをお勧めします。大量のデータがある場合は、索引付けが必要になる場合があります。

于 2013-03-27T21:45:32.340 に答える