За певних обставин виконання INSERT INTO <tablename> (WITH TABLOCK)заповіту буде швидше за рахунок мінімального ведення журналу. Ці обставини включають наявність бази даних у BULK_LOGGEDмоделі відновлення.
Чи є якась інша корисна ефективність для використання WITH TABLOCKна INSERTпорожній таблиці, коли база даних ( tempdb ) використовує SIMPLEмодель відновлення?
Я працюю з SQL Server 2012 Standard Edition.
Мій випадок використання - це створити, а потім негайно заповнити таблицю темпів у збереженій процедурі за допомогою INSERT...SELECT, яка може містити кілька мільйонів рядків. Я намагаюся уникати такого типу зловживань tempdb , але це іноді потрібно.
Я намагаюся побудувати випадок, щоб вимагати TABLOCK. Не здається, що це щось зашкодить, і може мати користь. Я намагаюся з’ясувати, чи є достатня потенційна користь, щоб додати її скрізь у всій нашій кодовій базі, де я впевнений, що немає іншого процесу, який хоче записати в таблицю.
Зазвичай я вставляю в щойно створену локальну таблицю темп з кластеризованою ПК, але іноді використовую купу.