0

我面临一个问题,即运行存储过程占用过多资源,这有时会导致服务器超时(尤其是当 CPU 使用率超过 90% 时)。

谁能建议最好和最快的方法是发现占用大量资源的块,并提出解决它的好方法,好吗?

  • 我正在使用 SQL Server 2005
4

5 回答 5

5

您想使用查询分析器。 在这里解释。它将向您显示查询执行路径的图形表示,以及其中哪些部分花费的时间最多。

于 2009-06-05T03:16:51.243 回答
3

如果您想知道哪个块最慢,请使用以下命令

设置统计资料

设置统计 IO 开启

设置统计时间

当您运行 SP 时,这将显示每个查询的统计信息。

于 2009-06-05T03:23:08.173 回答
0

You don't need to use SQL Profiler to view an execution plan - just:

SET SHOWPLAN_XML ON
于 2009-06-05T04:42:06.043 回答
0

如果您使用的是 SQl Server Management Studio,您可以打开执行计划以显示有关 sql server 将如何执行查询的信息,包括每个子进程将占用整个进程的百分比。

通常在执行此操作时,查询的一部分显然会使用大部分资源。

使用此信息,您可以就如何调整数据库做出明智的决定。(例如向有问题的表添加索引)

于 2009-06-05T03:18:56.403 回答
0

如果存储过程中有一堆语句,打开 SET STATISTICS 选项可能有点复杂,因为您有很多输出块与输入相关联。

SSMS 中查询计划的图形表示非常有用,因为它显示了每个语句相对于整个批处理/存储过程的成本的百分比成本。但这是一个单一值,因此有时仅运行 Profiler 并打开语句级输出会更有帮助。如果添加事件 SQL:StmtCompleted 和列 CPU 和读取,Profiler 将为每个语句提供单独的 IO 和 CPU 成本。

于 2009-06-05T13:55:36.943 回答