Understanding Hash Joins

łączyć mieszania ma dwa składniki: Kompilacja dane wejściowe i sondy dane wejściowe. optymalizator kwerendy przypisuje te role, tak, aby mniejszych nakładów dwa wejścia kompilacji.

Sprzężenia mieszania są używane dla wielu typów operacji dopasowywania zestaw: łączyć wewnętrzne; lewej, do prawej i pełne łączyć zewnętrzne; semi-łączyć lewy i prawy, przecięcia, Unię a różnica. Ponadto, można wykonać wariant łączyć mieszania powielanie, usuwanie i grupowanie, takie jak dział SUM(salary) GROUP BY.Modyfikacje te należy użyć tylko jedno wejście kompilacji i sondy ról.

W poniższych sekcjach opisano różne typy sprzężeń mieszania: łączyć mieszania w pamięci, prolongaty mieszania łączyć i cyklicznych mieszania łączyć.

Skrót w pamięci łączyć

łączyć mieszania najpierw skanuje lub oblicza dane wejściowe całego kompilacji i następnie buduje tabela mieszania w pamięci.Każdy wiersz jest wstawiany do pakietu wartości mieszania w zależności od wartości mieszania obliczone dla klucz skrótu.Jeśli dane wejściowe całego kompilacji jest mniejsza niż ilość dostępnej pamięci, wszystkie wiersze mogą być wstawiane do tabela mieszania.Ta faza kompilacji następuje faza sondę.Dane wejściowe sondy całego skanowany lub obliczana jeden wiersz w danej chwili i dla każdego wiersza sonda, wartość klucz mieszania jest obliczana, odpowiedniego pakietu wartości mieszania jest skanowany i dopasowania są produkowane.

Skrót dodatkowe łączyć

Jeżeli dane wejściowe kompilacji nie mieści się w pamięci, łączyć mieszania przechodzą w kilku etapach.Jest to określane jako dodatkowego łączyć mieszania.Każdy krok ma fazy kompilacji i faza sondę.Początkowo całego kompilacji i sondy produkcji są zużywane i podzielony na partycje (przy użyciu funkcja mieszania z klawiszy skrótu) na wiele plików.Klawisze skrótu przy użyciu funkcja mieszania gwarantuje, że żadne dwa rekordy łączących musi być w tej samej pary plików.Dlatego zadania sprzęgania dwóch dużych nakładów została zmniejszona do kilku, ale mniejsze, wystąpień tego samego zadania.łączyć mieszania jest następnie stosowana do każdej pary plików podzielonym na partycje.

Dołącz skrót cykliczne

Jeśli dane wejściowe kompilacji jest tak duża, że dane wejściowe dla standardowych zewnętrznych korespondencji seryjnej wymaga wielu poziomów korespondencji seryjnej, wiele czynności partycjonowanie na partycje i wielu poziomów partycjonowanie na partycje są wymagane.Jeśli tylko niektóre partycje są duże, dodatkowe kroki partycjonowanie na partycje są używane dla tych określonej partycjonowanie.W celu dokonania wszystkie kroki partycjonowanie na partycje, tak szybko jak to możliwe, duże, asynchronicznych operacji We/Wy są używane, aby jednym wątek może być wiele stacji dysków zajęta.

Uwaga

Dane wejściowe kompilacji jest nieco większy niż ilość dostępnej pamięci, połączone z elementami łączyć mieszania w pamięci i dodatkowego mieszania łączyć w jednym kroku, produkujących hybrydowego łączyć mieszania.

Nie zawsze jest możliwe podczas optymalizację, aby określić, które łączyć mieszania jest używany.Dlatego też SQL Server zostanie uruchomiony przy użyciu łączyć mieszania w pamięci i stopniowo przejścia prolongaty mieszania łączyć, a łączyć mieszania cyklicznych, w zależności od rozmiaru kompilacji, dane wejściowe.

Jeśli Optymalizator przewiduje się nieprawidłowo, który z dwóch danych wejściowych jest mniejszy i, dlatego powinny były wejściowy kompilacji, kompilacji i sondy role są wycofywane dynamicznie.łączyć mieszania sprawdza, czy używa mniejszy plik przepełnienia, jak tworzyć dane wejściowe.Ta metoda jest wywoływana. Odwrócenie roli.Odwrócenie roli występuje wewnątrz łączyć mieszania po rozlewania co najmniej jeden dysk.

Uwaga

Odwrócenie roli występuje niezależnie od wszelkich wskazówki kwerendy lub struktury.Odwrócenie roli nie są wyświetlane w planie kwerendy, jeśli występuje on jest niewidoczny dla użytkownika.

Ratowanie mieszania

Termin ratowanie mieszania czasem jest używany do opisu prolongaty mieszania sprzężeń lub cykliczne mieszania sprzężenia.

Uwaga

Cykliczne mieszania sprzężeń lub bailouts mieszania spowodować obniżonej wydajności serwera.Jeśli widzisz wiele Funkcje mieszania dla zdarzenia ostrzeżeń śledzenia, aktualizacja statystyki kolumn, które są przyłączone.

Aby uzyskać więcej informacji na temat ratowanie mieszania Zobacz Hash Warning Event Class.