0

ユーザーが一度に何百万ものレコードを検索できるアプリがあります。検索がタイムリーに返されない場合、ユーザーはアプリを終了し、再度ログインして、検索を再送信します。

SQL Serverは、ユーザーがログアウトしていて、まだ検索を実行してはならないことを認識していないため、同じクエリの多くが同時に実行されることになります。今、私は5分以上実行されているものを表示するスクリプトを実行しています(これらの検索は集中的で何時間も実行できることに注意してください)、重複するクエリが実行されていることをどのように検出できますか?

ありがとう、

フィリップ

4

2 に答える 2

1

次の SQL を実行して、テキスト値を確認できます。

SELECT sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext

SQL機関へのクレジット

于 2012-05-22T23:07:07.997 に答える
0

@kellが述べたように、そのクエリを使用すると、最も長く実行されているクエリを見つけることができますが、いくつかの問題がありますが、この情報を読むと、既知の問題を修正することもできます。
ところで、なぜあなたはこの仕事をsql-serverに任せてはいけないと思います。SQLサーバーには、クエリの複製、最適化、およびキャッシュを検出する内部機能があります。同じSQLクエリの結果をキャッシュすると、はるかに優れたものになります。
Microsoftは、sql-server-2008キャッシングのベストプラクティスペーパーを公開しています。それを読んでください

于 2012-05-22T23:47:54.390 に答える