阻止小的多个插入语句

时间:2013-11-15 04:50:43

标签: sql-server tsql

假设我有一个insert语句,其值来自另一个表的select语句。因此,一次插入许多记录。我有另一个只需要插入一条记录的进程。如何让SQL Server让单个insert语句更及时地执行?在我的观察中,当多个插入运行时,单个被阻塞很长一段时间。如果单身可以“溜进去”会很好。我尝试在插入内添加WITH (ROWLOCK)

1 个答案:

答案 0 :(得分:1)

批量插入可能会升级为表锁。您可以通过将表DDL更改为LOCK_ESCALATION=DISABLE来减少表锁,但这可能会降低批量插入性能。

另一种方法是重写批量INSERT / SELECT INTO以批量插入,使其永远不会超过5000 locks at a time.。然而,这将改变每个工作单元的范围,因为您现在将在每个较小的批次之后提交,这可能是不可取的。