Aracılığıyla paylaş


Karma anlama birleşimler

Karma birleştirmek iki girdi vardır: Giriş yapı ve yoklama girdi.sorgu iyileştiricisi, iki giriş daha küçük yapı giriş olacak bu rolleri atar.

Karma birleşimler birçok türleri küme eşleşen işlemler için kullanılır: iç birleştirmek; Sol, sağ ve tam dış birleştirmek; sağ ve sol semi-birleştirmek; kesişim; Birliği; ve fark.Üstelik bir türevini karma birleştirmek yapmak için çoğaltma kaldırma ve gruplandırma, SUM(salary) group by bölümü gibi.Bu değişiklikler yalnızca bir giriş için yapı ve yoklama rolleri kullanın.

Aşağıdaki bölümlerde farklı karma birleştirme türleri açıklanmıştır: bellek içi karma birleştirmek yetkisiz karma birleştirmek ve özyinelemeli karma birleştirmek.

Bellek içi karma Katıl

Karma birleştirmek önce tarar veya giriş tüm yapı hesaplar ve sonra belleğe karma tablo oluşturur.Her satır bir karma Kovası karma anahtar için hesaplanan karma değere bağlı eklenir.Tüm yapı giriş kullanılabilir bellek'den küçük ise, tüm satırlar karma eklenebilir tablo.Bu oluşturma aşaması araştırma aşaması gelir.Tüm Araştırma giriş taranan veya bir satır sonunda hesaplanan bir saat, her yoklama satır için hesaplanan karma anahtarının değer, karşılık gelen karma demet taranır ve eşleri üretilen.

Yetkisiz karma Katıl

Karma birleştirmek oluşturma giriş belleği uyma değilse, birkaç adımda devam eder.Bu, yetkisiz karma birleştirmek bilinir.Her adımda bir yapım aşaması ve araştırma aşaması vardır.Başlangıçta, tüm yapı ve yoklama girdileri tüketilir ve (karma tuşlar, karma işlev kullanarak) birden çok dosya bölümlenmiş.Karma tuşlar karma işlev kullanılarak herhangi iki birleşme kayıt dosyalarının aynı bilgisayar çiftine olmalıdır güvence altına alır.Bu nedenle, iki büyük giriş katılma görevi birden çok, ama küçük örneklere görevini düşürüldü.Karma birleştirmek bölümlenmiş dosyalarının her bir çifti daha sonra uygulanır.

Özyinelemeli karma Katıl

Yapı giriş birden çok birleştirme düzeyleri için standart bir dış birleştirme girişleri gerektirecek kadar büyük olması durumunda, birden çok bölümleme adımları ve birden çok bölümleme düzeyi gereklidir.Yalnızca bazı bölümlerini büyük, bölümleme ek adımlar yalnızca bu belirli bölümler için kullanılır.Bölümleme adımların tümünü olabildiğince hızlı yapmak için birden çok disk sürücüleri tek bir iş parçacığı meşgul takip edebilirsiniz böylece büyük, zaman uyumsuz g/Ç işlemlerinde kullanılır.

Not

Yapı giriş yalnızca kullanılabilir bellek'den biraz daha büyük ise, bellek içi karma birleştirmek ve yetkisiz karma birleştirmek öğelerini karma karma birleştirmek oluşturmanın tek bir adımda birleştirilir.

Her zaman hangi karma birleştirmek kullanıldığını belirlemek için en iyileştirme sırasında olası değildir.Bu nedenle, SQL Server bir bellek içi karma birleştirmek kullanarak başlar ve yavaş yavaş geçişler yetkisiz karma birleştirmek ve yapı girdi. boyutuna bağlı özyinelemeli karma birleştirmek

En iyi duruma getiricisi, iki giriş daha küçüktür ve, bu nedenle yapı giriş verilmiş olması yanlışlıkla karşı hazır, yapı ve yoklama rollerinin dinamik olarak geri alınır.Karma birleştirmek giriş oluşturmak gibi daha küçük taşma dosyasını kullandığından emin olur.Bu teknik olarak adlandırılan rolün.Rolün karma birleştirmek en az bir sıvı dökülmesine diske oluşur.

Not

Rolün bağımsız olarak herhangi bir sorgu ipuçları veya yapısı oluşur.Rolün sorgu planınızda görüntülemez; oluştuğunda, kullanıcı için saydamdır.

Karma BailOut komutunu

Bu terim karma BailOut komutunu bazen yetkisiz karma birleşimler veya özyinelemeli karma birleşimler tanımlamak için kullanılır.

Not

Özyinelemeli karma birleşimler veya karma bailouts sunucunuzun performansın düşmesine neden.Çok görüyorsanız karma uyarı olayları bir izleme güncelleştirme istatistikleri katılmış sütunlar üzerinde.

Karma BailOut komutunu hakkında daha fazla bilgi için bkz: Karma uyarısı Event Class.