假设我有一个insert
语句,其值来自另一个表的select
语句。因此,一次插入许多记录。我有另一个只需要插入一条记录的进程。如何让SQL Server让单个insert语句更及时地执行?在我的观察中,当多个插入运行时,单个被阻塞很长一段时间。如果单身可以“溜进去”会很好。我尝试在插入内添加WITH (ROWLOCK)
。
答案 0 :(得分:1)
批量插入可能会升级为表锁。您可以通过将表DDL更改为LOCK_ESCALATION=DISABLE
来减少表锁,但这可能会降低批量插入性能。
另一种方法是重写批量INSERT
/ SELECT INTO
以批量插入,使其永远不会超过5000 locks at a time.。然而,这将改变每个工作单元的范围,因为您现在将在每个较小的批次之后提交,这可能是不可取的。