内容摘要:你怎样确定你的应用程序执行的怎么样?你可以使用什么工具?每一个开发人员需要确定每一条应用程序TSQL语句是最优的。本篇文章将讲述关于怎样确定运行较慢的查询的一些不同方法,并提供给你一些小技巧用于在你反复修改每一个查询来试图改进性能的时候监控你的查询性能。
SQL Server提供了@@CPU_BUSY系统变量,它用来测量CPU消耗。这是在线书籍上对这个变量的定义:返回SQL Server 从最后一次启动到目前的工作时间。结果就在COU时间增量上,或“标记”,并且是所有CPU时间的累积,所以它可能会超出实际的实耗时间。将它乘以@@TIMETICKS来转化为微秒。
下面的方法是你可以使用@@CPU_BUSY变量来测量在我前一个示例中每一个循环执行过程中SQL Server 所使用的CPU量。现在记住既然@@CPU_BUSY 包含从SQL Server 启动以来使用的CPU量,那么它就包括所有用户和系统在服务器上运行的查询所使用的CPU量。因此只有当只有你在这个系统上运行SQL Server命令而没有后台系统执行查询时,这个方法测量的CPU量才准确:

如同你所看到的,我测量了第一个和第二个循环所使用的CPU毫秒时间。只是让你知道我运行了这个查询几次,获得的每次循环执行实际都不同。所以要注意,使用这个方法会受SQL Server上运行的其它东西影响。我想说的是这个方法对于测量实际的CPU使用不总是可靠的,但是如果你有一个具有较少活动的单独系统,那么它仍然是一个测量CPU消耗的方法。
一个更精确测量CPU使用的方法是使用SQL Server profiler。它包括CPU字段,显示于不同的完成事件。这里有一个例子是关于我怎样使用SQL Server profiler来捕捉上面的循环批处理所使用的CPU量:

这里我使用SQL:BatchCompleted 事件来捕捉CPU。默认情况下,SQL Profiler 以毫秒显示持续时间。使用“工具——选项”对话框,你可以将这个显示改为微秒。注意这个方法只能测量完整的批处理,而不能测量我的批处理中每一个循环的持续时间。
来源:IT专家网 作者:戴羽 责编:豆豆技术应用