use*_*108 4 database sql-server locks
我对SQL Server中的表上的锁定有疑问,同时使用多个进程将数据一次插入到同一个表中.
以下是我对此的问题,
请帮我理解一下.
mar*_*c_s 10
是否在执行插入时锁定表的SQL服务器的默认行为?
默认情况下,SQL Server按行锁定- 因此插入的新行被锁定 - 但不是整个表.
如果在单个事务中插入超过5000行,则会发生这种情况.在这种情况下,保持许多单独的锁只会变得太多,SQL Server将执行锁升级并锁定整个表.
它取决于表的大小和聚簇索引上的设置(如果存在).如果CI具有页锁并允许行锁,那么这些是默认值.如果多个页面被锁定,您将看到锁定升级,可能最多是表锁定.
如果要显式锁定表,可以使用TABLOCK插入的提示(INSERT INTO MyTABLE WITH (TABLOCK)...
我不确定你的意思.
| 归档时间: |
|
| 查看次数: |
9054 次 |
| 最近记录: |