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