- Що таке гарячі плями?
Аарон правильний, і я не збираюся переробляти те, що він говорив вище, проте справа не тільки в дисковому введенні. Основна частина, з якою у більшості людей виникають проблеми в TempDB, пов’язана із суперечками у певних структурах відстеження.
Оскільки наявність декількох файлів tempdb дозволяє алгоритмам пропорційного заповнення та круглої роботи ефективно проходити, будучи "справедливими" для розподілу, додаючи новий файл без виділень, це скидає трохи. Я не погоджуюся з тим, що це "куряче маленьке" попередження (див. Оновлення продукту нижче), якщо ви починаєте бачити PAGELATCH_*
очікування нового нового файлу, а не багато чи будь-яке інше. Це зазвичай відбувається в системах , які мають високу TempDB активність і вже мають більш ніж один файл.
Зверніть увагу, що в SQL Server 2019 є варіанти змінити деякі базові системні таблиці на таблиці в пам'яті, які можуть мати покращення, оскільки об'єкти в пам'яті розподіляються інакше, ніж таблиці, запечатані на диску. Таблиці на основі дисків - це традиційні таблиці, з якими ми всі працювали протягом багатьох років. SQL Server 2014 представив таблиці, оптимізовані для пам’яті . SQL Server 2019 може обробляти деякі метадані розподілу в оптимізованих пам'яті таблицях.
Ще одна зміна була внесена в SQL Server 2019, щоб допомогти з паралельними змінами PFS, що, як правило, полягає в тому, що суперечка в структурі пам'яті при розподілі PAGELATCH_*
чекає.
- Що з гарячими плямами робить темпдб набагато гіршими?
Нічого ІМХО. Так, у TempDB є більше елементів, які можуть спричиняти запис до нього, не використовуючись безпосередньо, тому він може перешкоджати деяким елементам. Однак дуже зайнята база даних щодо швидкості зміни даних так само погана. Це не обмежується лише TempDB.
- Які конкретні речі в БД стануть набагато гіршими?
Мені дуже подобається аналогія Аарона! У цьому суть того, що відбувається. Що насправді стає гіршим, це розподіл та відстеження місця для об’єктів у базі даних. Якщо ваша база даних в основному статична (низька швидкість зміни) або ваш TempDB насправді не використовується, ви нічого не помітите. Якщо, однак, це досить зайнятий сервер, ви можете запустити або посилити очікування сторінок, що може призвести до блокування конвоїв.
Аарон вже вказував, що в старій версії є прапори слідів, щоб переконатися, що використовуються рівномірні розширення та всі файли у групі файлів зростають разом (Аарон вказує 1117 та 1118, які є НОП у 2016+). Інше, що я хотів би ще раз зазначити, це те, що це стосується не лише TempDB, а будь-якої бази даних, і фізичний макет слід продумати залежно від потреб.
Це стосується не лише проблем з гарячою точкою, але також застосовно до інших частин системи, таких як резервне копіювання / відновлення, управління файлами, фрагментація метаданих файлової системи тощо. У цьому можна допомогти декількома файлами.
Ви можете бачити суперечність структури розподілу, шукаючи waitresource
на сторінці PFS (це сторінка 1, а потім кожні 8088 сторінок). Якщо ви бачите, що все в одному файлі (2: файл: сторінка), знаєте, що це відбувається.