Klasa zdarzenie rozlewania programu Exchange
The Exchange Spill zdarzenie class indicates that communication buffers in a parallel query plan have been temporarily written to the tempdb database.Dzieje się tak rzadko, i tylko wtedy, gdy plan kwerend ma wiele skanowania zakres.
Zazwyczaj Transact-SQL kwerendy, która generuje skanowania taki zakres ma wiele między podmiotami, z których każdy określa zakres wierszy z tabela lub indeks. Alternatywnie można nabyć w wielu zakresów za pomocą wyrażeń, takich jak (T.a > 10 I T.a < 20) Lub (T.a > 100 I T.a < 120). Ponadto planów kwerend muszą wymagać skanowania te zakresy w kolejności, ponieważ znajduje się na T.a klauzulę ORDER BY, lub ponieważ iterację w ramach planu wymaga, że zajmują jej krotek w kolejności sortowania.
Jeżeli plan kwerend dla takiej kwerendy ma wiele Proste buforów komunikacji pamięci używanych przez operatoryProste operatorów stają się pełne i sytuacji mogą powstawać zgodnie z którą zatrzymuje postępu realizacji kwerendy.W takim przypadku jednego z Proste operatory zapisuje swój bufor wyjściowytempdb (operację o nazwie rozlewania wymiany) tak, aby go może zużyć wierszy z niektórych swoich buforów danych wejściowych.Ostatecznie spilled wiersze są zwracane do konsumenta, gdy konsumenta jest gotowa do ich używać.
Bardzo rzadko wielu zalanie wymiany może wystąpić w ten sam plan wykonać, co uniemożliwia kwerendy wykonać powoli.Jeśli więcej niż pięć zalanie w ramach tego samego planu kwerendy wykonanie, skontaktuj się z pracownikiem pomocy technicznej.
Zalanie programu Exchange są czasami charakter przejściowy i może zniknąć ze zmianami dystrybucji danych.
Istnieje kilka sposobów uniknięcia wymiany rozlewania zdarzeń:
Pomiń ORDER BY klauzula, jeśli wynik nie jest konieczne, ustaw zostać zamówiona.
Jeśli klauzula ORDER BY jest wymagane, należy wyeliminować kolumn, które uczestniczą w wielu skanowania zakres (T.a w powyższym przykładzie) z klauzuli ORDER BY.
Za pomocą wskazówką indeksu, wymusić optymalizatora do używania danej ścieżka dostępu innym na dane tabela.
Należy zmodyfikować kwerendę tak, aby utworzyć plan wykonania innej kwerendy.
Wymuszanie szeregowego wykonanie kwerendy poprzez dodanie MAXDOP = 1 opcji na końcu operacji kwerendy lub indeksu.Aby uzyskać więcej informacji zobacz max degree of parallelism Option i Konfigurowanie równoległa operacje indeksu.
Important Note: |
---|
Aby ustalić, gdzie Rozlewania programu Exchange zdarzenie ma miejsce, gdy optymalizator kwerendy generuje plan wykonania, również należy zebrać Showplan klasa zdarzenia śledzenia.Można wybrać jedną z klas zdarzeń plan wykonania z wyjątkiem Tekst plan wykonania and Tekst plan wykonania (Unencoded) klas zdarzeń, które nie zwracają nazwę węzła.Nazwy węzła w Showplans zidentyfikować każdej operacji optymalizator kwerendy wykonuje generując plan wykonania kwerend.Operacje te są nazywane operator i operator w plan wykonania ma nazwę węzła.The ObjectID kolumna for Exchange Spill events corresponds to the Node ID in Showplans so you can determine which operator, or operation, is causing the error.Aby uzyskać więcej informacji na temat plan wykonania zdarzenie klas, zobacz Displaying Execution Plans by Using SQL Server Profiler Event Classes |
Kolumny dane klasa zdarzenia rozlewania programu Exchange
Nazwa kolumny danych |
Typ danych |
Description |
Identyfikator kolumny |
Czy umożliwia filtrowanie |
---|---|---|---|---|
ApplicationName |
nvarchar |
Nazwa aplikacji klient, który utworzył połączenie z wystąpienie programu SQL Server. CursorExecute |
10 |
Tak |
ClientProcessID |
int |
Identyfikator przypisany przez komputer-host to proces, w którym jest uruchomiona aplikacja klient.Ta kolumna danych jest pusta, jeśli klient dostarcza klientowi przetworzyć identyfikatora. |
9 |
Tak |
DatabaseID |
int |
ID of the database specified by the USE database statement or the default database if no USE database statement has been issued for a given instance.SQL Server Profiler displays the name of the database if the ServerName data column is captured in the trace and the server is available.Należy określić wartość dla bazy danych za pomocą funkcja DB_ID. |
3 |
Tak |
NazwaBazyDanych |
nvarchar |
Nazwa bazy danych, w którym jest uruchomiony w instrukcja użytkownika. |
35 |
Tak |
EventClass |
int |
Typ zdarzenie = 127. |
27 |
Nie |
EventSequence |
int |
Sekwencja danego zdarzenie w żądaniu. |
51 |
Nie |
EventSubClass |
int |
Użytkownik konfigurowalne (0-9) 1 = Rozlewania rozpoczyna się 2 = Rozlewania koniec |
21 |
Tak |
GroupID |
int |
Identyfikator grupy obciążenia, gdy zdarzenie śledzenia SQL uruchomieniu. |
66 |
Tak |
Exec Prepared SQL |
nvarchar |
Nazwa komputera, na którym działa klient.Ta kolumna danych jest pusta, jeśli klient dostarcza nazwę hosta.Aby określić nazwę hosta, należy użyć funkcja HOST_NAME. |
8 |
Tak |
IsSystem |
int |
Wskazuje, czy zdarzenie wystąpiło w procesie systemowym, czy w procesie użytkownika.1 = proces systemowy; 0 = proces użytkownika. |
60 |
Tak |
LoginName |
nvarchar |
Nazwa logowania użytkownika (albo SQL Server Logowanie zabezpieczeń lub poświadczenia logowania systemu Windows w postaci <domena>\<Nazwa użytkownika>). |
11 |
Tak |
LoginSid |
obraz |
Numer identyfikacyjny zabezpieczeń (SID) użytkownika zalogowanego.Niniejsze informacje można znaleźć syslogins tabelawzorzec bazy danych.Każdy identyfikator SID jest unikatowy dla każdego logowania na serwerze. |
41 |
Tak |
NTDomainName |
nvarchar |
Domena systemu Windows, do której należy dany użytkownik. |
7 |
Tak |
NTUserName |
nvarchar |
Przygotowanie programu SQL |
6 |
Tak |
Identyfikator obiektu |
int |
Powiększać automatycznie pliku danychOdpowiada identyfikator węzła w Showplans. |
22 |
Tak |
IdentyfikatorŻądania |
int |
Występuje, gdy uprawnienie obiektów (takich jak SELECT) jest używana pomyślnie lub niepomyślnie. |
49 |
Tak |
Nazwa_serwera |
nvarchar |
Nazwa wystąpienie programu SQL Server śledzone. |
26 |
Nie |
SessionLoginName |
nvarchar |
Nazwa logowania użytkownika, który pochodzi z sesja.Na przykład, jeśli łączysz się z SQL Server za pomocą Login1 i wykonać instrukcję jako Login2, SessionLoginName pokazuje Login1 i LoginName pokazuje Login2.W tej kolumnie są wyświetlane oba SQL Server i identyfikatory logowania systemu Windows. |
64 |
Tak |
SPID |
int |
Identyfikator sesja, na którym wystąpiło zdarzenie. |
12 |
Tak |
Godzina rozpoczęcia |
data_i_godzina |
Czas, w którym zdarzenie uruchomione, jeśli są dostępne. |
14 |
Tak |
TransactionID |
bigint |
Nie obejmuje operacje sortowania dotyczących tworzenia indeksów; tylko operacje sortowania w kwerendzie (na przykład klauzulę ORDER BY w instrukcja SELECT). |
4 |
Tak |
XactSequence |
bigint |
Token, który opisuje bieżącej transakcji. |
50 |
Tak |
See Also