Bit eşlem süzme yoluyla veri ambar sorgu performansı en iyi duruma getirme
En veri ambarı sorguları bir yıldız şeması izlemek için tasarlanmıştır ve tek bir sorgudaki satırları milyonlarca yüzlerce işleyebilir.Varsayılan olarak, sorgu iyileştiricisi yıldız şema sorguları algılar ve verimli bir sorgu planları için oluşturur.Iyileştirici verimli bir planı oluşturmak için kullanabileceğiniz bir bit eşlem süzme kullanmaktır.Bir bit eşlem süzgeç değerler ' küçük bir gösterimini kullanan bir tablo ikinci satırları süzme için işleç ağaçtan bir bölümünde tablo konsol ağacında, başka bir kısmında.Aslında, süzgeç semi-birleştirmek azaltma gerçekleştirir; Bu, yalnızca ikinci satır tablo, ilk birleştirme için uygun tablo işlenir.
Içinde SQL Server 2008, bit eşlem süzme sorgu planı sonra en iyi duruma getirme, gibi sunulan SQL Server 2005, veya dinamik olarak sorgu planı oluşturma sırasında sorgu iyileştiricisi tarafından kullanılmaya başlandı. Süzgeç dinamik olarak sunulan, onu olarak adlandırılmıştır bir bit eşlem süzgeç en iyi duruma getirilmiş.En iyi duruma getirilmiş bir bit eşlem süzme olmayan uygun satırları kaldırarak yıldız şemalar kullanan veri ambar sorgularının performansını önemli ölçüde artırabilirsiniz olgu tablosu erken içindeki sorgu planı.Süzme, tüm satırları en iyi duruma getirilmiş bir bit eşlem olmadan olgu tablosu olmayan uygun satırları birleştirmek işlemi boyut tablolarından kaldırır önce bazı bölümleri işleç ağacının işlenir.En iyi duruma getirilmiş bir bit eşlem süzme ne zaman uygulanır, gerçeğini olmayan uygun satırları tablo hemen ortadan kaldırmıştır.
En iyi duruma getirilmiş bir bit eşlem süzme işlemi yalnızca kuruluş, Developer ve deneme sürümlerini üzerinde kullanılabilir SQL Server.
Bit eşlem süzme işlemini anlama
Bit eşlem süzgeci, bit eşlem dizine favorably karşılaştırır.Hangi tablo belirli bir sütun değeri içerdiğini belirten bir veya daha fazla bit vektörler kullanarak bir değer listesi dizini satır KIMLIK (RID) listelerde göstermek için başka bir form BIR bit eşlem dizinidir.Her ikisi de gereksiz satır sonuç işleme'den kaldırma çok etkili olabilir; ancak, bir bit eşlem süzgeci ve bir bit eşlem dizin arasında önemli farklar vardır.Ilk olarak, bit eşlem süzgeçleri bellek yapılarını, böylece herhangi bir dizin bakım için temel tabloda yaptığınız yükü veri işleme dili (DML) işlemleri yüzünden ortadan ' dir.Buna ek olarak, bit eşlem süzgeçleri çok küçüktür ve, genellikle, bunların yerleşik tablo boyutuna bağlı varolan disk üzerindeki dizinleri, bit eşlem süzgeçleri dinamik olarak en az düzeyde etkisi sorgu işleme saat oluşturulabilir.
Bit eşlem en iyi duruma getirilmiş bir bit eşlem filtre ile filtre karşılaştırma
Bit eşlem süzme ve en iyi duruma getirilmiş bir bit eşlem süzme sorgu planı kullanarak uygulanan bit eşlem gösterim planı işleç.Bit eşlem süzme, yalnızca karma veya birleştirme hangi birleşimlerin kullanılır paralel sorgu planları kısmındaki uygulanır.En iyi duruma getirilmiş bir bit eşlem süzme, yalnızca karma değerini hangi birleşimlerin kullanılan paralel sorgu planları için geçerlidir.Her iki durumda da, bit eşlem süzgeci yapı Giriş (boyut tablosu) tarafında oluşturulan bir karma birleştirmek; ancak, gerçek süzme genellikle yapılır içinde Parallelism Giriş yoklama üzerinde olan işleç (olgu tablosu) yan karma birleşim. birleştirmek sütun bir tamsayı dayandığında, doğrudan ilk tablo ya da dizin taramayı operasyona filtre uygulanabilir yerine Parallelism işleç.Bu teknik olarak adlandırılır satır en iyi duruma getirme.
Bit eşlem süzme sorgu planı en iyi duruma getirme (Bu bağlantı sonra gelen, sorgunun derleme saat azaltılır; ancak, iyileştirici düşünebilirsiniz sorgu planlarını sınırlıdır ve önem ve Maliyet tahminleri dikkate alınır.
En iyi duruma getirilmiş bir bit eşlem süzgeçleri aşağıdaki avantajları vardır:
Birkaç boyut tablolarından süzme işlemi desteklenmiyor.
Tek bir işleç için birden çok filtre uygulanır.
Daha çok işleç türleri için en iyi duruma getirilmiş bir bit eşlem filtreler uygulanır.Bunlar, exchange işleçler gibi Akışları dağıtma and Yeniden_bölümleme akışları işleçler, tablo veya dizin tarama işleçler ve süzgeç işleçler.
Süzme SELECT deyimleri için geçerlidir ve salt okunur işleçler, ifadeleri INSERT, UPDATE, DELETE ve BIRLEŞTIRME kullanılır.
Süzme, dizin doldurmak için kullanılan işleçlerin'deki dizini oluşturulmuş görünümler oluşturma için geçerlidir.
Önem ve Maliyet tahminleri en iyi duruma getiricisi, en iyi duruma getirilmiş bir bit eşlem süzme uygun olup olmadığını belirlemek için kullanır.
Daha fazla planları, iyileştirici düşünebilirsiniz.
En iyi duruma getirilmiş bir bit eşlem filtre uygulanmayan nasıl
Bir bit eşlem süzme, yalnızca seçime bağlı olduğunda yararlıdır.sorgu iyileştiricisi için en iyi duruma getirilmiş bir bit eşlem süzgeçle yararlı seçmeli ve hangi işleçlerin için süzgeç uygulanmış belirler.Iyileştirici en iyi duruma getirilmiş bir bit eşlem süzgeçleri yıldız, tüm dalları yerleştirir birleştirmek ve kurallarını belirlemek için maliyetlendirme kullanır yürütme maliyet tahmini olup olmadığını planı en küçük sağlar.En iyi duruma getirilmiş bir bit eşlem süzgeç nonselective maliyet tahminine genellikle çok yüksektir ve planı atılır.En iyi duruma getirilmiş bir bit eşlem süzgeçleri planda yerleştirileceği yeri belirleneceğine karar verirken iyileştirici karma birleştirmek türevlerini karma birleştirmeler sağ derin yığınını gibi arar.Boyut tablolarından ile birleştirmeler, büyük olasılıkla en seçmeli birleştirmek ilk kez çalıştırmak için uygulanır.
En iyi duruma getirilmiş bir bit eşlem filtre uygulandığı işleç PROBE([Opt_Bitmap1001], {[biçiminde bir bit eşlem yüklemi içerir.sütun_adı} [, 'DE SATIR']).Bit eşlem yüklemi aşağıdaki bilgileri raporlar:
Bit eşlem adı olarak ada karşılık gelen Bit eşlem işleç.Bir en iyi duruma getirilmiş bir bit eşlem süzgecinin kullanılan 'Opt_' önekini gösterir.
Karşı probed sütun.Ağacı içinde süzülmüş veri akışı noktasıdır.
Bit eşlem yoklama satır içinde en iyi duruma getirme kullanıp.Bu sayı sabit olduğunda, bit eşlem yoklama IN SATıR parametresi ile çağrılır.Aksi halde, bu parametre eksik.
Örnek
Aşağıdaki örnek, bir sorgu basit bir yıldız şemayla temsil eder.Iki tablo boyut DimProduct ve DimCustomer olgu tablosu için katılın. FactInternetSales bir birincil anahtar-için-yabancı-anahtar birleşimi tek tamsayıdan oluşan bir sütun üzerinde kullanıyor.
USE AdventureWorksDW;
GO
SELECT *
FROM dbo.FactInternetSales AS F
INNER JOIN dbo.DimProduct AS D1 ON F.ProductKey = D1.ProductKey
INNER JOIN dbo.DimCustomer AS D2 ON F.CustomerKey = D2.CustomerKey
WHERE D1.StandardCost <= 30 AND D2.YearlyIncome <= 50000;
Bu görünür şekilde bu sorgu için yürütme planı aşağıda gösterilmiştir. SQL Server 2005. Boyut tablolarından 1Katalog işaretlenmiş noktalarda, taranan ve bilgileri olmayan niteleme satırlarını süzülecek gerekli olgu tablosu (1B) adı verilir.Ancak, özelliklerini Tablo tarama işleç Göster hiçbir yüklemi döndürülen satırları sınırlayın kullanılır olgu tablosu.
Buna ek olarak, bu görünür gibi aynı sorgu yürütme planı aşağıda gösterilmiştir SQL Server 2008. En iyi duruma getirilmiş bir bit eşlem işleçler, her iki boyut tablolarından alt ağaçlar kullanılır.Bu alt ağaçların (bit eşlem probes) filtrelerinden doğrudan uygulanan işleç gösteri tablonun özelliklerini taramak olgu tablosu döndürülen satırları sınırlayın için ağaç olgu tablosu için ilk birleştirmek işlemi öncesinde.
Süzme işlemini en iyi duruma getirilmiş bit eşlem gereksinimleri
En iyi duruma getirilmiş bir bit eşlem süzme işlemi, aşağıdaki gereksinimler vardır:
olgu tabloları en az 100 sayfaları olması bekleniyordu.Iyileştirici boyut tablolarından için daha küçük bir tablo olarak değerlendirir.
Yalnızca bir olgu tablosundaki ve boyut tablosu arasında iç birleşim olarak kabul edilir.
Arasında birleştirme koşulunu olgu tablosu ve boyut tablosu için bir tek sütun birleştirmeki olmalıdır, ancak bu birincil-anahtarının-için-yabancı anahtar ilişkisi olması gerekmez.Bir tamsayı tabanlı sütun tercih edilir.
Boyutları birleşimleri, yalnızca boyut giriş cardinalities olgu tablosundan bir giriş önem'den küçük kabul edilir.