SQL Server Profiler差异

时间:2009-06-23 11:22:10

标签: sql-server sql-server-2005 performance sqlprofiler

我正在使用Sql Profiler解决一个奇怪的问题。在运行一些性能测试脚本时,我运行分析器来查找瓶颈。一个特别的陈述似乎需要花费很多时间 - 使用CPU 1407,读取75668和持续时间175。

但是,当我在Management Studio中运行相同的语句时,SQL事件探查器将返回CPU 16,Reads 4&持续时间55.

任何人都可以指出我做错了什么,因为我对此完全感到困惑。

谢谢,苏珊。

3 个答案:

答案 0 :(得分:3)

您可能拥有一个具有表访问权限的标量用户定义函数。

使用的资源仅由分析器获取:SSMS不会显示标量udf的内部IO或CPU。

示例:

CREATE FUNCTION dbo.MyUdf (
    @param int
)
AS
RETURNS int
BEGIN
    RETURN (SELECT MAX(foo) FROM dbo.MyOtherTable WHERE Key = @param)
END
GO


SELECT
    col1, col2, dbo.MyUdf(col3)
FROM
    dbo.MyFirstTable

然而,这可能无法解释持续时间......

答案 1 :(得分:0)

是java / hibernate问题。

答案 2 :(得分:0)

如果在分析后直接在企业管理器中运行查询,则所需的所有页面都将缓存在内存中。这可以带来巨大的改善。

如果右键单击Enterprise Manager中的服务器并选择“属性”,则可以更改服务器可用的内存量。如果您更改此数字甚至一步,SQL服务器将刷新其缓存。