0

.NET と SQL Server 2008 R2 に基づいてサポートするソリューションを継承しました。

アーキテクチャは、すべてのクライアントが互いに歩調を合わせる必要があるようなものであり、これは、各クライアントが行われた変更の通知を送受信する winsock ハブによって処理されます。これらの通知は、タイプの更新とキー フィールドの形式です。

通知を受信すると、クライアント ウィンドウは更新の種類を検査し、関心があると判断した場合は、データベース コマンド (ストアド プロシージャ) を発行して、そのキー値の最新データを取得します。通常、呼び出されたストアド プロシージャは、多数のテーブルをリンクして、かなり大きなオブジェクトを返します。

私の問題は、多くのクライアントがアクティブな場合、同じストアド プロシージャを「同時に」呼び出してパフォーマンスを低下させていることです。たとえば、1 秒未満のクエリでは、他のクライアントがおそらく待機するため、単独で呼び出されると c20 秒かかることがあります。完了。

これで私を助けることができるSQLサーバーにすぐに使えるものはありますか? 結果のキャッシュや、あるクエリが別のクエリをブロックするのを止める方法を考えていますか?

クライアント コードと通知プロセスにいくつかの変更を加えて、データベースに何度も問い合わせる必要がないように、完全に取り込まれたオブジェクトを渡す必要があることを理解しています。ただし、これは寿命が限られているレガシー アプリケーションであるため、大幅なアップグレードを行うのは頭の痛い問題です。SQL サーバーに使用できるシンプルなスイッチがあれば、必要な時間を稼ぐことができます。

ありがとう、アンドリュー

4

1 に答える 1