Sql server SQL Server探查器不一致
我正在使用Sql事件探查器解决一个奇怪的问题。在运行一些性能测试脚本时,我运行profiler来查找瓶颈。一个特殊的语句似乎花费了很多时间——CPU 1407,读取75668,持续时间175 然而,当我在ManagementStudio中运行相同的语句时,SQL探查器返回CPU 16,读取4和持续时间55 谁能告诉我我做错了什么,因为我完全被这件事弄糊涂了Sql server SQL Server探查器不一致,sql-server,sql-server-2005,performance,sql-server-profiler,Sql Server,Sql Server 2005,Performance,Sql Server Profiler,我正在使用Sql事件探查器解决一个奇怪的问题。在运行一些性能测试脚本时,我运行profiler来查找瓶颈。一个特殊的语句似乎花费了很多时间——CPU 1407,读取75668,持续时间175 然而,当我在ManagementStudio中运行相同的语句时,SQL探查器返回CPU 16,读取4和持续时间55 谁能告诉我我做错了什么,因为我完全被这件事弄糊涂了 谢谢,Susan。您可能有一个具有表访问权限的标量用户定义函数 使用的资源仅由探查器获取:SSMS不会显示标量udf的内部IO或CPU 例如
谢谢,Susan。您可能有一个具有表访问权限的标量用户定义函数 使用的资源仅由探查器获取: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
但是,这可能无法解释持续时间…您可能有一个具有表访问权限的标量用户定义函数 使用的资源仅由探查器获取: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
但是,这可能无法解释持续时间…是一个java/hibernate问题。是一个java/hibernate问题。如果您在评测之后直接在enterprise manager中运行查询,它需要的所有页面都将缓存在内存中。这可能导致巨大的改进
如果在Enterprise Manager中右键单击服务器并选择属性,则可以更改服务器可用的内存量。如果您仅在一个步骤中更改此数字,SQL server将刷新其缓存。如果您在分析之后直接在enterprise manager中运行查询,则它需要的所有页面都将缓存在内存中。这可能导致巨大的改进
如果在Enterprise Manager中右键单击服务器并选择属性,则可以更改服务器可用的内存量。如果您只需更改一步,SQL server就会刷新其缓存。也许您没有做错任何事情,并且看到了缓存的结果。如果您再次配置文件,所花费的时间会缩短吗?谢谢您的提示,但我先清除了缓存。也许您没有做错任何事情,并且看到了缓存的结果。如果您再次配置文件,所用的时间会缩短吗?谢谢您的提示,但我先清除了缓存。谢谢。这是一个常见的问题,如果您仔细想想,它实际上是一个游标……我认为它可能使用了一个游标,因为我在sql exec sp中看到了这一点_prepexec@Susan:你能把冒犯性的声明贴出来吗?我们得到了更多的信息,我们发现,该语句是从Java/Hibernate组合中调用的,调用方式是返回50000行,而不是执行该语句时返回的2行directly@Susan:有趣。你有更多的给我们吗?谢谢。这是一个常见的问题,如果您仔细想想,它实际上是一个游标……我认为它可能使用了一个游标,因为我在sql exec sp中看到了这一点_prepexec@Susan:你能把冒犯性的声明贴出来吗?我们得到了更多的信息,我们发现,该语句是从Java/Hibernate组合中调用的,调用方式是返回50000行,而不是执行该语句时返回的2行directly@Susan:有趣。你有更多的给我们吗?