Покращення tempdb в sql server 2018

Покращення в продуктивності при роботі з tempdb

Також в роботу tempdb були внесені наступні зміни, спрямовані на оптимізацію та прискорення виконання запитів:

  • Кешування тимчасових об'єктів дозволяє запитам, які постійно видаляють і створюють тимчасові об'єкти працювати швидше і зменшують конкуренцію за системні ресурси. В останніх версіях SQL Server можна було регулярно бачити зміни і поліпшення цього механізму.
  • Зменшено навантаження на журнал транзакцій в tempdb, знижена кількість необхідних I \ O операцій.
  • Доопрацьовано алгоритм накладання latch'ей при виділенні сторінок, зменшено їх кількість.
  • При збільшенні tempdb тепер одночасно буде збільшений розмір всіх файлів (відпадає необхідність включати прапор трасування 1117). Опція AUTOGROW_ALL_FILES включена за замовчуванням і не може бути змінена. Це допоможе уникнути розбалансування розмірів файлів при постійно прирості tempdb.
  • Для тимчасових об'єктів йде виділення тільки екстенти (блоками по 8 сторінок, 64 кб). Відпадає необхідність включати прапор трасування 1118. Це також допоможе в більшій частині випадків.

доповнення:

Давайте розглянемо так само як можна дізнатися чи є у вас проблеми з кількістю файлів tempdb. Для цього достатньо збирати дані наступного запиту:

When Cast (Right (resource_description. Len (resource_description) - Charindex ( ':'. Resource_description. 3)) As Int) - 1% 8088 = 0 Then 'Is PFS Page'

When Cast (Right (resource_description. Len (resource_description) - Charindex ( ':'. Resource_description. 3)) As Int) - 2% 511232 = 0 Then 'Is GAM Page'

When Cast (Right (resource_description. Len (resource_description) - Charindex ( ':'. Resource_description. 3)) As Int) - 3% 511232 = 0 Then 'Is SGAM Page'

Else 'Is Not PFS, GAM, or SGAM page'

From sys. dm_os_waiting_tasks

Where wait_type Like 'PAGE% LATCH_%'

And resource_description Like '2:%'

Цим запитом ми намагаємося знайти latch на системні сторінки PFS, GAM, SGAM в базі даних tempdb. Якщо запит нічого не повертає або повертає рядки тільки з «Is Not PFS, GAM, or SGAM page». то швидше за все поточна навантаження не потребує збільшення файлів tempdb.

Додатково рекомендується відстежувати лічильник продуктивності (Performance Monitor) на SQLServer: Databases - Transaction / sec в tempdb і якщо tempdb став пропускати більше транзакцій при тому ж навантаженні, значить ви йдете в потрібному напрямку.

Схожі статті