我正在使用Sql Profiler解决一个奇怪的问题。在运行一些性能测试脚本时,我运行分析器来查找瓶颈。一个特别的陈述似乎需要花费很多时间 - 使用CPU 1407,读取75668和持续时间175。
但是,当我在Management Studio中运行相同的语句时,SQL事件探查器将返回CPU 16,Reads 4&持续时间55.
任何人都可以指出我做错了什么,因为我对此完全感到困惑。
谢谢,苏珊。
答案 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服务器将刷新其缓存。