Я запускаю Microsoft SQL Server 2016 SP2-CU6 (13.0.5292.0) на VCPU VM із max degree of parallelism
встановленим значенням 2
та cost threshold for parallelism
встановленим параметром 50
.
Вранці, намагаючись відобразити передбачуваний план виконання запиту SELECT TOP 100 , я зіштовхуюсь з масовими очікуваннями, і операція з подання прогнозованого плану займає хвилини, часто разів у межах 5 - 7 хвилин. Знову ж таки, це не власне виконання запиту, це лише процес відображення розрахункового плану виконання .
sp_WhoIsActive
покаже або PAGEIOLATCH_SH
чекає чи LATCH_EX [ACCESS_METHODS_DATASET_PARENT]
чекає, і коли я запускаю сценарій Поля Рандала WaitingTasks.sql під час операції, він показує CXPACKET
очікування з робочими потоками, що показує PAGEIOLATCH_SH
очікування:
* поле опису ресурсів = exchangeEvent id=Port5f6069e600 WaitType=e_waitPortOpen waiterType=Coordinator nodeId=1 tid=0 ownerActivity=notYetOpened waiterActivity=waitForAllOwnersToOpen
Робочі потоки, схоже, приносять всю stats
таблицю в пам'ять (як ці номери сторінок, так і наступні номери сторінок, показані з точки запиту Пола Рандала назад до кластерного ключа для stats
таблиці). Після того, як план все-таки повертається, він в основному миттєвий на іншу частину дня, навіть після того, як я бачу більшу частину stats
витримки таблиці з кешу, що залишилися лише різні записи (які, я вважаю, були витягнуті через пошук операцій з подібних запитів).
Я б очікував такої початкової поведінки, якщо запит справді виконувався з планом, який використовував оператори SCAN, але чому це робиться при оцінці планів виконання лише для того, щоб прийти до оператора SEEK, як показано в плані, пов'язаному вище? Що я можу зробити (окрім запуску цієї заяви перед робочим часом, щоб мої дані були належним чином кешовані), щоб покращити ефективність роботи тут? Я припускаю, що пара покриття індексів була б корисною, але чи справді вони гарантували б якісь зміни в поведінці? Мені тут доводиться працювати в межах деяких обмежень вікна зберігання та обслуговування, а сам запит генерується з рішення постачальника, тому будь-які інші пропозиції (крім кращої індексації) були б вітаються на даний момент.