Trong một số trường hợp, làm một INSERT INTO <tablename> (WITH TABLOCK)
sẽ nhanh hơn do đăng nhập tối thiểu. Những trường hợp bao gồm có cơ sở dữ liệu trong BULK_LOGGED
mô hình phục hồi.
Có bất kỳ lợi ích hiệu suất tiềm năng nào khác khi sử dụng WITH TABLOCK
trên một INSERT
bảng trống khi cơ sở dữ liệu ( tempdb ) đang sử dụng SIMPLE
mô hình khôi phục không?
Tôi đang làm việc với SQL Server 2012 Standard Edition.
Trường hợp sử dụng của tôi là để tạo và sau đó lập tức điền vào bảng tạm thời trong một thủ tục được lưu trữ bằng cách sử dụng một INSERT...SELECT
, có thể chứa tới vài triệu hàng. Tôi cố gắng tránh loại lạm dụng tempdb đó , nhưng đôi khi nó là cần thiết.
Tôi đang cố gắng xây dựng một trường hợp để yêu cầu TABLOCK
. Có vẻ như nó sẽ không làm tổn thương gì, và có thể có lợi ích. Tôi đang cố gắng tìm hiểu xem có đủ lợi ích tiềm năng để thêm nó ở bất cứ đâu trong toàn bộ cơ sở mã của chúng tôi hay không, nơi tôi chắc chắn không có quy trình nào khác muốn ghi vào bảng.
Tôi thường chèn vào một bảng tạm thời cục bộ mới được tạo với một cụm PK, nhưng đôi khi sử dụng một đống.