查询表时 SQL Server 大容量复制是否会导致超时

Per*_*ury 4 sql-server bulk

在 SQL Server 2008 R2 中,使用BulkCopy上传数千行数据会导致在同一张表上进行查询时出现问题吗?

特别是它会导致查询超时吗?

被查询的表有数百万行。

Mar*_*son 6

绝对可以。

就像任何其他插入操作一样,它需要锁。如果使用了足够多的锁,它将升级为全表锁(假设表允许)。任何像这样的插入操作都会阻止任何其他试图读取数据的操作,除非为这些查询指定了 NOLOCK(我在这里不推荐)。

如果您感兴趣,您实际上可以设置跟踪以查看正在使用的锁定类型。只需设置一个 Profiler 跟踪,获取“Locks: Acquired”和“Locks: Escalation”,然后进行批量插入。

警告的话,Profiler 可能会影响性能,所以我要么在开发服务器上运行跟踪,要么如果您必须在生产中运行它,导出脚本并将其作为服务器端跟踪执行。