SQL 过程的运行时间差异很大
我有一个应用程序在 SQL Server 2000 上运行一个巨大的存储过程。通常需要大约 1 分钟才能完成,但有时会花费更长的时间。 刚才我在我的测试系统中连续运行了三次。 分别用了 1 分 12 分、1 分 23 分和 55 分 25 秒。 什么会导致这种行为? 数据库中还有其他事情发生,所以我想知道它是否与锁有关。 我怎样才能在行为中捕捉到这一点?
I have an application that runs a huge stored procedure on SQL Server 2000. Usually it takes about 1 minute to complete, but occasionally it will take MUCH longer.
Just now I ran it three times in a row in my test system. It took 1:12, 1:23, and 55:25.
What would cause that behavior? There are other things going on in the database, so I wonder if it has something to do with locks. How can I catch this in the act?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这可能是参数嗅探:根据输入,Sql Server 选择了不同的查询计划。
另一种可能性是一个单独的查询同时运行并锁定了所有内容。
It's probably parameter sniffing: based on the input, Sql Server chose a different query plan.
Another possibility is that a separate query was running at the same time and locked everything up.
创建跟踪并在 Profiler 中检查它。 这至少应该指出问题所在——在你的程序中还是其他地方。
Create a trace and examine it in Profiler. That should at least point towards where the problem lies - in your procedure or elsewhere.