sql server想问问 with nolock的使用
心在飞扬 2021-02-16 06:15:37 基本业务是这样... 我现在在做一个系统,有时候会有抢票,并发量比较大,所以一般这个时候,系统后面就发生大量的死锁....
我的表大概简单来说 就 五个,可以简单说为 A,B,C,D,E,然后一些查询的存储过程①,②,③,然后还要主要提交的存储过程(1)
在并发量大的时候,各个都访问了存储过程(1),所以会导致这个存储引起死锁。
但是我现在优化的是①,②,③这些查询的存储,我在这些存储上面,所有查询A,B,C,D,E表的select下,都是用了 with nolock....
我现在想做的就是,展示给客户看的时候,不要发生阻塞,这些表都是允许有脏数据的,所以可以用with nolock....
只要提交的存储过程(1)里面不用with nolock 就能保证数据准确了。。
但是我现在发生的问题是,即便①,②,③使用了with nolock,但是当用户调用这些存储时,依然会报 访问超时...或者
事务(进程 ID %1!)与另一个进程已被死锁在资源 {%2!} 上,且该事务已被选作死锁牺牲品 类似的错误
这个我有点想不明白,因为我这些查询是没有用事务的,而且也开启了with nolock,所以我觉得①,②,③这些查询存储执行时
不会发生这种错误才对,如果是提交的存储(1)报错,我是能理解的,但是不能理解①,②,③执行时也报错。