Zablokowane sesje oczekujące z typami oczekiwania PAGELATCH_ *?

9

Edytowane: Dlaczego raportowanie sesji jest blokowane, ale czeka z PAGELATCH_*, a nie LCK_M_powiązane typy oczekiwania?

Wcześniej zakładałem, że SQL Server zgłasza tylko sesje blokujące w kolumnie blocking_session_Id. Jeśli zablokowane sesje czekały na logiczną blokadę, a nie na nic innego, jak np PAGELATCH_*.

wprowadź opis zdjęcia tutaj

Piksele
źródło
Wygląda na to, że wiele równoległych sesji wstawia dane do tabeli. Czy możesz opublikować strukturę tabeli wraz z indeksami?
Kin Shah,
@ W tabeli, od której zaczynają się wstawiać identyfikatory SPID 69, 82 i 84, ma indeks klastrowany zdefiniowany za pomocą właściwości TOŻSAMOŚĆ (1,1), więc może to być przypadek niezgodności wstawiania ostatniej strony, ale na tym etapie jestem bardziej zainteresowany dlaczego zablokowane sesje oczekują z typem oczekiwania niezwiązanym z blokowaniem. Co ciekawe, SPID 93 próbuje umieścić XLOCK na całkowicie niepowiązanym stole do stołu wybranego spośród 64.
Pixelated

Odpowiedzi:

6

Wcześniej zakładałem, że SQL Server zgłosi sesję blokującą tylko w kolumnie blocking_session_id, jeśli zablokowane sesje czekają na logiczną blokadę, a nie na nic innego jak PAGELATCH_*.

Używasz sp_WhoIsActiveprocedury Adama Machanica , a nie wbudowanego narzędzia SQL Server. Procedura Adama zgłasza wszystkie „interesujące” przyczyny blokowania, a nie tylko blokowanie blokady. Podstawowe informacje pochodzą z różnych źródeł, w tym sysprocesses , sys.dm_exec_requests i sys.dm_os_waiting_tasks .

Zadanie może czekać na inne rzeczy oprócz blokady. Może być w stanie, na przykład, do nabycia blokady na rzędzie na stronie, ale nadal musi czekać do nabycia wyłączne strony zatrzask (ze względu na inne zadania, które podtrzymywane tej samej strony w trybie niezgodnego).

W twoim przykładzie PAGELATCH_EXwyłączne zatrzaski strony znajdują się na zwykłych stronach danych lub indeksach, a nie na stronach PFS, GAM, SGAM, DCM lub BCM, jak wskazano (*) na końcu instrukcji wait_info .

Dokumentację (wpisy na blogu) można znaleźć sp_WhoIsActive tutaj .

Paul White 9
źródło