假设我有一个insert
语句,其中值select
来自另一个表中的语句。因此,一次插入了许多记录。我有另一个只需要插入一条记录的过程。如何让 SQL Server 让单个插入语句更及时地执行?在我的观察中,当多个插入运行时,单个插入被阻塞了相当长的一段时间。如果单曲能“溜进来”就好了。我尝试添加WITH (ROWLOCK)
插入。
问问题
187 次
1 回答
1
批量插入可能会升级为表锁。您可以通过将表 DDL 更改为 来潜在地减少表锁LOCK_ESCALATION=DISABLE
,但这可能会降低批量插入性能。
另一种方法是重写批量INSERT
/SELECT INTO
以批量插入,这样它一次不会持有超过5000 个锁。. 然而,这会改变每个工作单元的范围,因为您现在将在每个较小的批次之后提交,这可能是不可取的。
于 2013-11-15T05:01:30.773 回答