0

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

但是,当我在 Management Studio 中运行相同的语句时,SQL Profiler 返回 CPU 16、读取次数 4 和持续时间 55。

谁能指出我做错了什么,因为我对此完全感到困惑。

谢谢,苏珊。

4

3 回答 3

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

但是,这可能无法解释持续时间...

于 2009-06-23T11:26:34.727 回答
0

是一个 java/hibernate 问题。

于 2009-08-20T09:40:20.947 回答
0

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

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

于 2009-08-20T09:50:56.090 回答