在某些情况下,INSERT INTO <tablename> (WITH TABLOCK)由于日志记录最少,执行 an会更快。这些情况包括将数据库置于BULK_LOGGED恢复模型中。
是否有任何其他潜在的性能优势,使用WITH TABLOCK上INSERT的空白表时,数据库(tempdb数据库)使用SIMPLE恢复模式?
我正在使用 SQL Server 2012 标准版。
我的用例是在使用 的存储过程中创建然后立即填充临时表INSERT...SELECT,其中可能包含多达几百万行。我尽量避免这种tempdb滥用,但有时需要这样做。
我正在尝试构建一个需要 require 的案例TABLOCK。它似乎不会伤害任何东西,并且可能有好处。我试图弄清楚是否有足够的潜在好处将它添加到我们的代码库中的任何地方,我确信没有其他进程想要写入表。
我通常使用集群 PK 插入新创建的本地临时表,但有时会使用堆。