我正在使用TABLOCK表提示阅读
对于像这样的声明
INSERT INTO Tab1
SELECT * FROM Tab2
可以优化事务日志记录。
我不明白这一点,因为Tablock
会锁定整个表,因此没有其他进程可以访问它,那么这将如何优化事务日志记录?
如果没有TABLOCK
提示,SQL Server 将使用其正常的行级锁定 - 因此对于它尝试插入的每一行,它将锁定正在插入的新行,然后继续。这可能会增加许多需要持有和管理的锁。
使用 TABLOCK
只是锁定进程的整个表,因此当该INSERT ... SELECT ...
语句运行时,没有其他事务可以访问该表 - 但只有一个锁(在表上),因此与在新插入的行上具有数十个、数百个甚至数千个单独的锁相比,管理开销要小得多。