Udostępnij za pośrednictwem


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 noteImportant 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