最近、SQL Server に関する厄介な問題に直面しています。ノード プログラムを使用して接続し、クエリを実行しています。request/db クエリの数が増えるにつれて、SQL Server のパフォーマンスが低下しているようです。
基本的なテスト シナリオを使用しました。このシナリオでは、約 6 つの同時要求を取得し、それによって 6 つのデータベース クエリが並行してトリガーされます。結果として、各クエリの評価時間はおよそ 6 倍になりました。
というわけで、基本的に単一のクエリをヒットすると約 120 ミリ秒かかりますが、6 つの同様のクエリが並列に実行される場合、各クエリは約 7500 ミリ秒かかります。これは同時リクエストで厄介な問題です。
記録のために、私はSELECT
ノンブロッキングでなければならないクエリを使用しています。
ヘルプや情報をいただければ幸いです。
アップデート
テーブルを確認しましたが、インデックスがありません。私がテストしたクエリは、句を含む単純なSELECT
クエリです。WHERE
またsys.dm_tran_lock
、データベース ロック情報を確認したところ、リクエスト クエリごとにそのテーブルにISロックが作成されていることがわかりました。Azure インスタンスで実行されている SQL Server 2012 です。ハードウェアの仕様についてはわかりませんが、標準に達している必要があります。
クエリの組み合わせを少し試してみましたが、同時クエリが同じテーブル/ビューを使用するときに最もヒットするようです。