我们正在使用sql Server 2005数据库(没有行版本)与一个巨大的选择语句,我们看到它阻止其他语句运行(使用sp_who2看到).我没有意识到SELECT语句可能会导致阻塞 – 有什么可以做的来减轻这个吗?
解决方法
SELECT可以阻止更新.正确设计的数据模型和查询只会导致最小的阻塞,而不是一个问题. “通常”WITH NOLOCK提示几乎总是错误的答案.正确的答案是调整查询,以免扫描巨大的表.
如果查询不可用,那么您应该首先考虑SNAPSHOT ISOLATION level,第二个应该考虑使用DATABASE SNAPSHOTS,最后一个选项应该是DIRTY READS(最好是更改isolation level而不是使用NOLOCK提示).请注意,如清楚所述,脏读取将返回不一致的数据(例如,您的总表可能不平衡).