Udostępnij za pomocą


Klasa zdarzeń ostrzeżenia hasz

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Klasa zdarzenia Ostrzeżenie o Skrótze może być używana do monitorowania, kiedy podczas operacji haszującej wystąpiła rekurencja skrótu lub przerwanie haszowania (bailout skrótu).

Rekurencja skrótu występuje, gdy dane wejściowe nie mieszczą się w dostępnej pamięci, co skutkuje podziałem wejścia na wiele partycji przetwarzanych oddzielnie. Jeśli któraś z tych partycji nadal nie mieści się w dostępnej pamięci, jest dzielona na podpartycje, które również są przetwarzane oddzielnie. Proces podziału trwa do momentu, gdy każda partycja zmieści się w dostępnej pamięci lub do osiągnięcia maksymalnego poziomu rekurencji (wyświetlanego w kolumnie danych IntegerData).

Awaryjne zakończenie operacji skrótu występuje, gdy operacja tworzenia skrótów osiągnie maksymalny poziom rekursji i przełącza się na alternatywne rozwiązanie do przetwarzania pozostałych danych partycjonowanych. Pakiet bailout haszów zwykle następuje z powodu zniekształconych danych.

Rekurencja skrótu i ratowanie haszów powodują obniżoną wydajność serwera. Aby wyeliminować lub zmniejszyć częstotliwość rekurencji skrótu i ratunków, zrób jedno z poniższych działań:

  • Upewnij się, że statystyki istnieją na kolumnach, które są łączone lub grupowane.

  • Jeśli na kolumnach istnieją statystyki, zaktualizuj je.

  • Użyj innego rodzaju połączenia. Na przykład, jeśli to stosowne, użyj łączenia MERGE lub LOOP.

  • Zwiększ dostępną pamięć na komputerze. Rekurencja skrótu lub bailout zachodzi, gdy nie ma wystarczająco dużo pamięci do przetwarzania zapytań i muszą one zostać przesłane na dysk.

Tworzenie lub aktualizacja statystyk w kolumnie zaangażowanej w łączenie jest najskuteczniejszym sposobem na zmniejszenie liczby rekurencji skrótów lub ratunk, które się pojawiają.

Uwaga / Notatka

Terminy grace hash join oraz rekurencyjne hash join są również używane do opisu hash bailout.

Ważne

Aby określić, gdzie pojawia się zdarzenie ostrzeżenia o hasze podczas generowania planu wykonania przez optymalizator zapytań, powinieneś także zebrać klasę zdarzenia Showplan w śledzeniu. Możesz wybrać dowolną klasę zdarzeń Showplan, z wyjątkiem klas zdarzeń Showplan Text i Showplan Text (Unencoded), które nie zwracają identyfikatora węzła. Identyfikatory węzłów w planach pokazowych identyfikują każdą operację wykonywaną przez optymalizator zapytań podczas generowania planu wykonania zapytań. Operacje te nazywane są operatorami, a każdy operator w Showplanie ma identyfikator węzła. Kolumna ObjectID dla zdarzeń ostrzeżenia o hasze odpowiada identyfikatorowi węzła w Showplans, dzięki czemu można określić, który operator lub operacja powoduje błąd.

Kolumny danych o zdarzeniu ostrzeżenia o zdarzeniu skrótu

Nazwa kolumny danych Typ danych Description Identyfikator kolumny Filtrowanie
ApplicationName nvarchar Nazwa aplikacji klienckiej, która utworzyła połączenie z wystąpieniem programu SQL Server. Ta kolumna jest wypełniona wartościami przekazywanymi przez aplikację, a nie wyświetlaną nazwą programu. 10 Tak
ClientProcessID int Identyfikator przypisany przez komputer hosta do procesu, w którym działa aplikacja kliencka. Ta kolumna danych jest wypełniana, jeśli klient poda identyfikator procesu klienta. 9 Tak
DatabaseID int Identyfikator bazy danych określony przez polecenie bazy USE lub domyślnej bazy danych, jeśli dla danego przypadku nie wydano żadnego polecenia bazy USE. Program SQL Server Profiler wyświetla nazwę bazy danych, jeśli kolumna danych ServerName zostanie przechwycona w śladzie, a serwer jest dostępny. Określ wartość bazy danych przy użyciu funkcji DB_ID. 3 Tak
DatabaseName nvarchar Nazwa bazy danych, w której jest uruchomiona instrukcja użytkownika. 35 Tak
EventClass int Typ wydarzenia = 55. 27 Nie.
Sekwencja zdarzeń int Sekwencja danego zdarzenia w żądaniu. 51 Nie.
EventSubClass int Typ podklasy zdarzenia.

0=Rekurencja

1=Ratunek
dwadzieścia jeden Tak
GroupID int Identyfikator grupy obciążenia, w której jest uruchamiane zdarzenie śledzenia SQL. 66 Tak
Nazwa hosta nvarchar Nazwa komputera, na którym jest uruchomiony klient. Ta kolumna danych jest wypełniana, jeśli klient poda nazwę hosta. Aby określić nazwę hosta, użyj funkcji HOST_NAME. 8 Tak
IntegerData int Poziom rekurencji (tylko rekurencja skrótu). 25 Tak
IsSystem int Wskazuje, czy zdarzenie miało miejsce w procesie systemowym, czy w procesie użytkownika. 1 = system, 0 = użytkownik. 60 Tak
Nazwa logowania nvarchar Nazwa logowania użytkownika (albo SQL Server security login, albo dane logowania do Windows w formie <DOMAIN>\<username>). 11 Tak
LoginSid image Numer identyfikacyjny zabezpieczeń (SID) zalogowanego użytkownika. Informacje te znajdziesz w widoku katalogu sys.server_principals. Każdy identyfikator SID jest unikatowy dla każdego identyfikatora logowania na serwerze. 41 Tak
NTDomainName nvarchar Domena systemu Windows, do której należy użytkownik. 7 Tak
NTUserName nvarchar Nazwa użytkownika systemu Windows. 6 Tak
Identyfikator obiektu int ID węzła rdzenia zespołu haszującego zaangażowanego w repartycję. Odpowiada ID węzła w Showplans. 22 Tak
Identyfikator żądania int Identyfikator żądania zawierającego to wyrażenie. 49 Tak
NazwaSerwera nvarchar Nazwa instancji SQL Server, która jest śledzona. 26
SessionLoginName nvarchar Nazwa logowania użytkownika, który utworzył sesję. Na przykład, jeśli połączysz się z SQL Server za pomocą Login1 i wykonasz polecenie jako Login2, SessionLoginName pokazuje Login1, a LoginName pokazuje Login2. W tej kolumnie są wyświetlane zarówno identyfikatory logowania programu SQL Server, jak i systemu Windows. 64 Tak
SPID int Identyfikator sesji, w której wystąpiło zdarzenie. 12 Tak
StartTime datetime Godzina rozpoczęcia zdarzenia, jeśli jest dostępna. 14 Tak
TransactionID bigint Przypisany przez system identyfikator transakcji. 4 Tak
XactSequence bigint Token opisujący bieżącą transakcję. 50 Tak

Zobacz też

sp_trace_setevent (Transact-SQL)
Łączy