gpt4 book ai didi

sql-server - 选择太多字段会导致表锁定吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:42 26 4
gpt4 key购买 nike

我在存储过程中有一个 SELECT 语句,在非常重的负载下会导致超时:“超出锁定请求超时期限。” - 至少 .NET 是这样的。这是对具有主键和聚簇索引(在 TYPE_CODE1 上)的表 (CODES) 的非常简单的查询。唯一看起来不寻常的是,有很多字段被选中(除了Dclass之外的所有字段都是位字段)。这会导致表锁定吗?还有其他想法吗?

TIA

select
@TYPE_CODE1 = TYPE_CODE1,
@ALTERNATE_CODE = ALTERNATE_CODE,
@BANNER = BANNER,
@CODE_1 = CODE_1,
@CODE_2 = CODE_2,
@CODE_3 = CODE_3,
@CODE_4 = CODE_4,
from CODES with (nolock)
where
Dclass = @Dclass
and Ret = @Ret
and Rem = @Rem
and Ope = @Ope
and Res = @Res
and Cer = @Cer
and Cdo = @Cdo
and Del = @Del
and Sig = @Sig
and Ads = @Ads
and Adr = @Adr
and Emi = @Emi
and In1 = @In1
and In2 = @In2
and Paa = @Paa
and Reg = @Reg
and Red = @Red
and Rer = @Rer
and Ree = @Ree
and Rei = @Rei
and Spe = @Spe
and Mer = @Mer
and Hol = @Hol
and Day = @Day
and Sca = @Sca
and Sis = @Sis
and Poa = @Poa
and Haz = @Haz
and Sun = @Sun
and Out = @Out
and IsActive = 1

最佳答案

Lock Request Timeout exceeded 并不总是与表锁直接相关。该错误意味着查询正在等待获取 SQL Server 中某个对象的锁,但速度不够快,因此查询超时。

此外,SQL 使用称为锁升级 的过程,如果查询需要超过 5000 个锁(页/行级锁),它将请求全表锁。如果您达到这个 5000 锁阈值并尝试锁定表,它可能会卡在其他已经锁定它的进程后面。

我会尝试运行您的应用程序,然后同时在 Management Studio 中使用 sp_Whoisactive 等工具找出阻止您的应用程序并导致其超时的原因。很可能是其他一些进程锁定了您尝试查询的表。

关于sql-server - 选择太多字段会导致表锁定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30576696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com