Отримайте мінімальний журнал під час завантаження даних у тимчасові таблиці


10

Навіть прочитавши Посібник з продуктивності завантаження даних , я все ще не впевнений, чи потрібно додати підказку таблиці TABLOCK до порожньої тимчасової таблиці, визначеної кластерним індексом, щоб отримати мінімальний журнал.

Очевидно, що таблиця temp створена в TempDB, який працює в простому режимі відновлення, тому я б подумав, що це ідеальний кандидат для мінімального ведення журналу, однак я не можу знайти уривок для його підтвердження.

Чи є тимчасова таблиця кандидатом на мінімальний журнал, і якщо так, чи варто додати підказку TABLOCK, як рекомендовано для постійних таблиць?

Відповіді:


18

Я не впевнений, чи потрібно додати TABLOCKпідказку таблиці до порожньої тимчасової таблиці, визначеної кластерним індексом, щоб отримати мінімальний журнал.

Ні. Місцеві тимчасові таблиці ( #temp) є приватними для створення сесії, тому підказка щодо блокування таблиці не потрібна. Підказка щодо блокування таблиці потрібна для глобальної тимчасової таблиці ( ##temp) або звичайної таблиці ( dbo.temp), створеної в tempdb, оскільки до них можна отримати доступ з декількох сеансів.

Зауважте, що навіть там, де не застосовуються повні мінімальні оптимізації журналу, таблиці, створені на tempdbкористь інших оптимізацій, як, наприклад, не потребують реєстрації REDOінформації. Ви можете перевірити, чи реєструються рядки чи сторінки за допомогою недокументованих документів sys.fn_dblog. Регулярний журнал буде містити записи, записані в рядки, як-от LOP_INSERT_ROWS.


Зауважте, що для додавання TABLOCKдо локальної тимчасової таблиці потрібно паралельне виконання INSERT...SELECTзапитів у SQL Server 2016, див. Статтю бази знань Microsoft:

Низька продуктивність при запуску INSERT .. SELECT операцій у SQL Server 2016

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.