【问题标题】:TABLOCK for optimize transaction logging for insert select statementTABLOCK 用于优化插入选择语句的事务日志记录
【发布时间】:2013-09-11 22:06:57
【问题描述】:

我正在使用 TABLOCK 表提示阅读该内容

对于这样的陈述

INSERT INTO Tab1 
SELECT * FROM Tab2

可以优化事务日志。

我不明白这是因为Tablock 将锁定整个表,因此其他进程无法访问它,那么这将如何优化事务日志记录?

【问题讨论】:

    标签: sql-server logging optimization transactions


    【解决方案1】:

    如果没有TABLOCK 提示,SQL Server 将使用其正常的行级锁定 - 因此对于它尝试插入的每一行,它将锁定正在插入的新行,然后继续。这可能会增加很多需要持有和管理的锁。

    使用TABLOCK 只是为进程锁定整个表,所以当INSERT ... SELECT ... 语句正在运行时,没有其他事务可以访问该表 - 但只有一个锁(在表上),所以与在新插入的行上拥有数十个、数百个甚至数千个单独的锁相比,管理开销要小得多。

    【讨论】:

    • marc_s : 当我们想在数据仓库中对 FactTable 进行合并时,我们应该使用 TabLock 吗?剂量 tabLock 提高 TRSF 模式和 DW 模式之间合并语句的性能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2018-11-08
    • 2023-03-10
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多