34,873
社区成员
发帖
与我相关
我的任务
分享
if (@isstate=1)
update dbo.B_Elevators set IsState=@isstate,CollectionIsState=@isstate where Sign=@MACAddress
else if (@isstate=2)
update dbo.B_Elevators set IsState='1',CollectionIsState='0',CollectionCode=' ' where Sign=@MACAddress
else
update dbo.B_Elevators set IsState=@isstate,CollectionIsState=@isstate,CollectionCode=' ' where Sign=@MACAddress
两个变量是ado传进来的
现在调用的次数十分频繁,大多数都是到30毫秒之间,但是经常出现几百毫秒甚至1秒往上的情况,这个时间我是在我VC程序里面截取的,我那边由于数据量很大,调用存储过程还是阻塞模式,需要一直等待结果(虽然不需要这个结果),要求时间尽量短,所以想问一下为什么会出现这种情况[/quote]update是排他模式,一个会话在update,另外一个update的会话就必须等待,最终表现出来就是等
if (@isstate=1)
update dbo.B_Elevators set IsState=@isstate,CollectionIsState=@isstate where Sign=@MACAddress
else if (@isstate=2)
update dbo.B_Elevators set IsState='1',CollectionIsState='0',CollectionCode=' ' where Sign=@MACAddress
else
update dbo.B_Elevators set IsState=@isstate,CollectionIsState=@isstate,CollectionCode=' ' where Sign=@MACAddress
两个变量是ado传进来的
现在调用的次数十分频繁,大多数都是到30毫秒之间,但是经常出现几百毫秒甚至1秒往上的情况,这个时间我是在我VC程序里面截取的,我那边由于数据量很大,调用存储过程还是阻塞模式,需要一直等待结果(虽然不需要这个结果),要求时间尽量短,所以想问一下为什么会出现这种情况[/quote]
用这个查询一下,看看具体的阻塞情况:
select *
from sysprocesses
where blocked <> 0
if (@isstate=1)
update dbo.B_Elevators set IsState=@isstate,CollectionIsState=@isstate where Sign=@MACAddress
else if (@isstate=2)
update dbo.B_Elevators set IsState='1',CollectionIsState='0',CollectionCode=' ' where Sign=@MACAddress
else
update dbo.B_Elevators set IsState=@isstate,CollectionIsState=@isstate,CollectionCode=' ' where Sign=@MACAddress
两个变量是ado传进来的
现在调用的次数十分频繁,大多数都是到30毫秒之间,但是经常出现几百毫秒甚至1秒往上的情况,这个时间我是在我VC程序里面截取的,我那边由于数据量很大,调用存储过程还是阻塞模式,需要一直等待结果(虽然不需要这个结果),要求时间尽量短,所以想问一下为什么会出现这种情况