Używam Microsoft SQL Server 2016 SP2-CU6 (13.0.5292.0) na maszynie wirtualnej 4 vCPU z max degree of parallelismustawioną 2i cost threshold for parallelismustawioną na 50.
Rano, gdy próbuję wyświetlić szacunkowy plan wykonania dla zapytania SELECT TOP 100 , napotykam ogromne oczekiwania, a operacja renderowania szacowanego planu zajmuje minuty, często w zakresie 5-7 minut. Ponownie, to nie jest faktyczne wykonanie zapytania, to tylko proces wyświetlania Szacowanego Planu Wykonania .
sp_WhoIsActivepokaże albo PAGEIOLATCH_SHczeka albo LATCH_EX [ACCESS_METHODS_DATASET_PARENT]czeka, a kiedy uruchomię skrypt WaitingTasks.sql Paula Randala podczas operacji, wyświetla CXPACKEToczekiwania z wątkami roboczymi pokazującymi PAGEIOLATCH_SHoczekiwania:
* pole opisu zasobu = exchangeEvent id=Port5f6069e600 WaitType=e_waitPortOpen waiterType=Coordinator nodeId=1 tid=0 ownerActivity=notYetOpened waiterActivity=waitForAllOwnersToOpen
Wątki robocze wyglądają statsna zapamiętywanie całej tabeli (ponieważ te numery stron, a także kolejne numery stron pokazane w zapytaniu Paula Randala z powrotem do klucza klastrowego statstabeli). Po powrocie planu jest on w zasadzie natychmiastowy przez resztę dnia, nawet po tym, jak widzę większość statsścierania tabeli z pamięci podręcznej i pozostały tylko różne rekordy (które, jak zakładam, zostały pobrane z powodu operacji wyszukiwania z podobnych zapytań).
Oczekiwałbym tego początkowego zachowania, gdyby zapytanie faktycznie było wykonywane przy użyciu planu korzystającego z operatorów SCAN, ale dlaczego robi to, oceniając plany wykonania, aby dotrzeć do operatora SEEK, jak pokazano w powyższym planie? Co mogę zrobić (oprócz uruchamiania tego wyciągu przed godzinami pracy, aby moje dane były odpowiednio buforowane), aby poprawić wydajność tutaj? Zakładam, że para indeksów obejmujących byłaby korzystna, ale czy naprawdę gwarantowałyby jakiekolwiek zmiany w zachowaniu? Muszę tu pracować w ramach pewnych ograniczeń okna przechowywania i konserwacji, a samo zapytanie jest generowane z rozwiązania dostawcy, więc wszelkie inne sugestie (oprócz lepszego indeksowania) byłyby w tym momencie mile widziane.

