При некоторых обстоятельствах выполнение INSERT INTO <tablename> (WITH TABLOCK)
будет быстрее из-за минимальной регистрации. К таким обстоятельствам относится наличие базы данных в BULK_LOGGED
модели восстановления.
Есть ли другие потенциальные выгоды производительности для использования WITH TABLOCK
на условиях INSERT
на пустом столе , когда база данных ( Tempdb ) использует SIMPLE
модель восстановления?
Я работаю с SQL Server 2012 Standard Edition.
Мой вариант использования для создания и последующего немедленного заполнения временной таблицы в хранимой процедуре с использованием переменной INSERT...SELECT
, которая может содержать до нескольких миллионов строк. Я стараюсь избегать такого рода злоупотреблений tempdb , но иногда это необходимо.
Я пытаюсь построить дело по требованию TABLOCK
. Похоже, это не повредит и может принести пользу. Я пытаюсь выяснить, достаточно ли потенциальной выгоды, чтобы добавить ее везде в нашей базе кода, где я уверен, что нет никакого другого процесса, который хочет писать в таблицу.
Я обычно вставляю во вновь созданную локальную временную таблицу с кластеризованным PK, но иногда использую кучу.