为什么有时运行挺快,有时运行很慢?

zhangsong841 2008-05-23 10:37:48
declare @intday datetime
set @intday='2002-11-09'
while @intday<='2007-12-01'
begin
exec dbo.so_xu1 @intday
exec dbo.everyday @intday
set @intday=dateadd(day,1,@intday)
end
这段是我的代码,我是在公司的服务器上运行,运行时cpu耗50%,内存耗60%左右,
dbo.so_xu1和dbo.everyday是存储过程.
每个个存储过程中都建了4个临时表,并在存储过程的最后行删除了临时表.
相同的代码,相同的表,相同的数据量,为什么有时运行挺快,有时运行很慢?
...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangsong841 2008-05-23
  • 打赏
  • 举报
回复
1:如果一个服务器上只运行一个查讯分析器的一段代码的话,
还会有进程阻塞现象吗?
2:有进程阻塞现象的话,重启服务器能解决阻塞吗?
zhangsong841 2008-05-23
  • 打赏
  • 举报
回复
有进程阻塞现象怎么查?
arrow_gx 2008-05-23
  • 打赏
  • 举报
回复
这个问题比较复杂,
你应该查看一下,运行慢的时候,是否存在锁,是否有进程阻塞现象,
那要从阻塞源头查起,才能知道为什么会慢
wangd1121 2008-05-23
  • 打赏
  • 举报
回复
打开活动监视器,找到你运行的进程,看进程后面的
阻塞者
阻塞进程的进程 ID (SPID)。
0标识没有被阻塞。
duanzhi1984 2008-05-23
  • 打赏
  • 举报
回复
你可以在企业管理器中查看进程的状态,或SP_LOCK查看锁.
duanzhi1984 2008-05-23
  • 打赏
  • 举报
回复
这是很正常的,我经常遇到这些问题,有的时候客户端访问的人多的时候,就慢,偶尔也会发生死锁.因为慢的时候,可能是其他客户端将相关的表锁住了.
针对这样的问题,我觉得比较棘手,只要不死锁就可以了.
有的时候也和硬件,网络流量等有关系,不好查
zhangsong841 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wangd1121 的回复:]
引用 1 楼 arrow_gx 的回复:
这个问题比较复杂,
你应该查看一下,运行慢的时候,是否存在锁,是否有进程阻塞现象,
那要从阻塞源头查起,才能知道为什么会慢


也有进程阻塞的可能,你可以在活动监视器里查看你运行的进程是否被阻塞。
[/Quote]

活动监视器看"状态"吗?sleep or runable or ....?
阻塞或死锁是什么英文?
hery2002 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhangsong841 的帖子:]
declare @intday datetime
set @intday='2002-11-09'
while @intday <='2007-12-01'
begin
exec dbo.so_xu1 @intday
exec dbo.everyday @intday
set @intday=dateadd(day,1,@intday)
end
这段是我的代码,我是在公司的服务器上运行,运行时cpu耗50%,内存耗60%左右,
dbo.so_xu1和dbo.everyday是存储过程.
每个个存储过程中都建了4个临时表,并在存储过程的最后行删除了临时表.
相同的代码,相同的表,相同的数据…
[/Quote]
这个快慢跟你的服务器上运行的应用或者服务有关,
如果某一时间点运行的服务或者应用比较多,
那么系统资源消耗大的话,肯定运行的比较慢,

如果服务器上没有其它的应用,
那么就是Sql server本身的问题了,
是否有其它调用sql server的应用在run或者是比较耗资源的在执行,
还有就是是否有死锁,堵塞等等,
wangd1121 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arrow_gx 的回复:]
这个问题比较复杂,
你应该查看一下,运行慢的时候,是否存在锁,是否有进程阻塞现象,
那要从阻塞源头查起,才能知道为什么会慢
[/Quote]

也有进程阻塞的可能,你可以在活动监视器里查看你运行的进程是否被阻塞。
wangd1121 2008-05-23
  • 打赏
  • 举报
回复
你可以打开STATISTICS IO 选项得到操作时的I/0信息:
SET STATISTICS IO ON;
对比运行快和运行慢时的I/0信息,可能运行快的时候是读的缓存。
utpcb 2008-05-23
  • 打赏
  • 举报
回复
你吃饭有时候也多啊也少啊 !晕这个嘛 要仔细的找原因的!

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧