0

我有一个应用程序可以让用户一次搜索数百万条记录。当搜索没有及时返回时,用户退出应用程序,重新登录,然后重新提交搜索。

SQL 服务器不知道用户已注销并且它不应该仍在运行搜索,所以我最终会同时执行许多相同的查询。现在我只运行一个脚本,显示运行了 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 server 具有查找查询重复、优化和缓存的内部能力。如果您缓存相同的 sql 查询的结果会更好。
Microsoft 已发布 sql-server-2008 缓存的最佳实践论文。阅读它

于 2012-05-22T23:47:54.390 回答