Gerçekleştirilmiş görünümler
Şunlar için geçerlidir: ✅Microsoft Fabric✅Azure Veri Gezgini
Gerçekleştirilmiş görünümler bir toplama sorgusunu kaynak tablo veya başka bir gerçekleştirilmiş görünüm üzerinden kullanıma sunar.
Gerçekleştirilmiş görünümler her zaman toplama sorgusunun güncel bir sonucunu döndürür (her zaman yenidir). Gerçekleştirilmiş bir görünümü sorgulamak, toplamayı doğrudan kaynak tablo üzerinde çalıştırmaktan daha yüksek performanslıdır.
Not
- Gerçekleştirilmiş görünümlerin sizin için uygun olup olmadığına karar vermek için gerçekleştirilmiş görünümlerin kullanım örneklerini gözden geçirin.
- Gerçekleştirilmiş görünümlerin bazı sınırlamaları vardır. Özellik ile çalışmadan önce performansla ilgili dikkat edilmesi gereken noktaları gözden geçirin.
- Uygun durumlarda güncelleştirme ilkelerini kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz . Gerçekleştirilmiş görünümler ve güncelleştirme ilkeleri.
- Gerçekleştirilmiş görünümleri izleme sayfasındaki önerilere göre gerçekleştirilmiş görünümlerinizin durumunu izleyin.
Neden gerçekleştirilmiş görünümler kullanmalısınız?
Yaygın olarak kullanılan toplamaların gerçekleştirilmiş görünümleri için kaynaklara (veri depolama, arka plan CPU döngüleri) yatırım yaparak aşağıdaki avantajları elde edersiniz:
Performans iyileştirmesi: Gerçekleştirilmiş bir görünümü sorgulamak genellikle aynı toplama işlevleri için kaynak tabloyu sorgulamaktan daha iyi performans gösterir.
Güncellik: Gerçekleştirilmiş görünüm sorgusu, gerçekleştirmenin en son ne zaman gerçekleştiğinden bağımsız olarak her zaman en güncel sonuçları döndürür. Sorgu, görünümün gerçekleştirilmiş bölümünü kaynak tablodaki kayıtlarla birleştirir ve bu kayıt henüz gerçekleşmemiştir (
delta
bölüm), her zaman en güncel sonuçları sağlar.Maliyet azaltma: Gerçekleştirilmiş bir görünümü sorgulamak, kaynak tablo üzerinde toplama yapmaktan daha az kaynak tüketir. Kaynak tablonun bekletme ilkesi, yalnızca toplama gerekiyorsa azaltılabilir. Bu kurulum, kaynak tablo için sık erişimli önbellek maliyetlerini azaltır.
Örneğin kullanım örnekleri için bkz . Gerçekleştirilmiş görünüm kullanım örnekleri.
Gerçekleştirilmiş görünümler nasıl çalışır?
Gerçekleştirilmiş görünüm iki bileşenden oluşur:
- Gerçekleştirilmiş parça - kaynak tablodan toplanan kayıtları tutan ve önceden işlenmiş olan bir tablo. Bu tablo her zaman toplamanın gruplandırma ölçütü bileşimi başına tek bir kayıt tutar.
- Delta - Kaynak tablodaki henüz işlenmemiş yeni alınan kayıtlar.
Gerçekleştirilmiş görünümü sorgulamak, gerçekleştirilmiş bölümü delta bölümüyle birleştirerek toplama sorgusunun güncel bir sonucunu sağlar. Çevrimdışı gerçekleştirme işlemi, deltadaki yeni kayıtları gerçekleştirilmiş tabloya alır ve mevcut kayıtları güncelleştirir. Delta ile gerçekleştirilmiş bölüm arasındaki kesişim büyükse ve birçok kayıt güncelleştirme gerektiriyorsa, bunun gerçekleştirme işlemi üzerinde olumsuz bir etkisi olabilir. Bu tür durumlarla ilgili sorunları giderme hakkında gerçekleştirilmiş görünümleri izleme konusuna bakın.
Gerçekleştirilmiş görünüm sorguları
Gerçekleştirilmiş görünümü sorgulamanın 2 yolu vardır:
Görünümün tamamını sorgulama: Gerçekleştirilmiş görünümü, bir tabloyu sorgulamaya benzer şekilde adına göre sorguladığınızda, gerçekleştirilmiş görünüm sorgusu görünümün gerçekleştirilmiş bölümünü kaynak tablodaki henüz gerçekleşmemiş kayıtlarla birleştirir (the
delta
).- Gerçekleştirilmiş görünümü sorgulamak, kaynak tabloya alınan tüm kayıtları temel alarak her zaman en güncel sonuçları döndürür. Gerçekleştirilmiş görünümde gerçekleştirilmiş ve gerçekleştirilmemiş parçalar hakkında daha fazla bilgi için, gerçekleştirilmiş görünümlerin nasıl çalıştığına bakın.
- Bu seçenek, bölümü sorgu süresi boyunca gerçekleştirmesi gerektiğinden
delta
en iyi performansı göstermeyebilir. Bu durumda performans görünümün yaşına ve sorguya uygulanan filtrelere bağlıdır. Gerçekleştirilmiş görünüm sorgu iyileştiricisi bölümü , görünümün tamamını sorgularken sorgu performansını artırmanın olası yollarını içerir.
Yalnızca gerçekleştirilmiş bölümü sorgulama: Görünümü sorgulamanın bir diğer yolu da işlevini kullanmaktır
materialized_view()
. Bu seçenek, görünümün yalnızca gerçekleştirilmiş kısmını sorgulamayı desteklerken, kullanıcının tolere etmek istediği maksimum gecikme süresini belirtir.- Bu seçeneğin en güncel kayıtları döndürmesi garanti değildir, ancak görünümün tamamını sorgulamaktan her zaman daha yüksek performanslı olmalıdır.
- Bu işlev, örneğin telemetri panoları gibi performans için bazı yenilikleri feda etmek istediğiniz senaryolar için kullanışlıdır.
İpucu
Gerçekleştirilmiş kısımdaki sorgular her zaman görünümün tamamını sorgulamaktan daha iyi performans gösterir. Kullanım örneğine uygun olduğunda her zaman işlevini kullanın materialized_view()
.
Gerçekleştirilmiş görünümler, kümeler arası veya veritabanları arası sorgulara katılır, ancak joker karakter birleşimlerine veya aramalarına dahil değildir.
- Aşağıdaki örneklerin tümü adıyla
ViewName
gerçekleştirilmiş görünümleri içerir:
cluster('cluster1').database('db').ViewName cluster('cluster1').database('*').ViewName database('*').ViewName database('DB*').ViewName database('*').materialized_view('ViewName') database('DB*').materialized_view('ViewName')
- Aşağıdaki örnekler gerçekleştirilmiş görünümlerden kayıtları içermez:
cluster('cluster1').database('db').* database('*').View* search in (*) search *
- Aşağıdaki örneklerin tümü adıyla
Gerçekleştirilmiş görünümler çapraz Eventhouse veya veritabanları arası sorgulara katılır, ancak joker karakter birleşimlerine veya aramalarına dahil değildir.
- Aşağıdaki örneklerin tümü adıyla
ViewName
gerçekleştirilmiş görünümleri içerir:
cluster("<serviceURL>").database('db').ViewName cluster("<serviceURL>").database('*').ViewName database('*').ViewName database('DB*').ViewName database('*').materialized_view('ViewName') database('DB*').materialized_view('ViewName')
- Aşağıdaki örnekler gerçekleştirilmiş görünümlerden kayıtları içermez:
cluster("<serviceURL>").database('db').* database('*').View* search in (*) search *
- Aşağıdaki örneklerin tümü adıyla
Gerçekleştirilmiş görünüm sorgu iyileştiricisi
Görünümün tamamı sorgulanırken, gerçekleştirilmiş bölüm sorgu sırasında ile delta
birleştirilir. Bu, öğesini toplamayı delta
ve gerçekleştirilmiş parçayla birleştirmeyi içerir.
- Sorgu gerçekleştirilmiş görünüm sorgusunun anahtarlarına göre gruplama filtreleri içeriyorsa, görünümün tamamını sorgulama daha iyi bir performans gösterir. Performans ipuçları bölümünde sorgu düzeninize göre gerçekleştirilmiş görünümünüzü oluşturma hakkında daha fazla ipucuna
.create materialized-view
bakın. - Sorgu iyileştiricisi, sorgu performansını geliştirmesi beklenen özetleme/birleştirme stratejilerini seçer. Örneğin, sorgunun karıştırılıp karıştırılmayacağına ilişkin karar kısmen kayıt
delta
sayısına bağlıdır. Aşağıdaki istemci isteği özellikleri , uygulanan iyileştirmeler üzerinde biraz denetim sağlar. Bu özellikleri gerçekleştirilmiş görünüm sorgularınızla test edebilir ve sorgu performansı üzerindeki etkilerini değerlendirebilirsiniz.
İstemci isteği özellik adı | Type | Açıklama |
---|---|---|
materialized_view_query_optimization_costbased_enabled |
bool |
olarak false ayarlanırsa, gerçekleştirilmiş görünüm sorgularında özetleme/birleştirme iyileştirmelerini devre dışı bırakır. Varsayılan stratejileri kullanır. Varsayılan true değeridir. |
materialized_view_shuffle |
dynamic |
Gerçekleştirilmiş görünüm sorgusunu karıştırmaya zorlar ve (isteğe bağlı olarak) karıştırmak için belirli anahtarları sağlar. Aşağıdaki örneklere bakın. |
ingestion_time()
gerçekleştirilmiş görünümler bağlamında işlev
ingestion_time() işlevi, görünümün tamamını sorgularsa gerçekleştirilmiş görünüm bağlamında kullanıldığında null değerler döndürür. Görünümün gerçekleştirilmiş bölümünü sorgularken, dönüş değeri gerçekleştirilmiş görünümün türüne bağlıdır:
- Tek
arg_max()
/arg_min()
take_any()
/bir toplama içeren gerçekleştirilmiş görünümlerde ,ingestion_time()
kaynak tablodaki ilgili kaydın değerine eşittir.ingestion_time()
- Diğer tüm gerçekleştirilmiş görünümlerde değeri
ingestion_time()
yaklaşık olarak gerçekleşme zamanıdır (gerçekleştirilmiş görünümlerin nasıl çalıştığına bakın).
Örnekler
Görünümün tamamını sorgula. Kaynak tablodaki en son kayıtlar şunlardır:
ViewName
Görünümün gerçekleştirilmiş bölümünü, en son ne zaman gerçekleştirildiğine bakılmaksızın sorgulayın.
materialized_view("ViewName")
Görünümün tamamını sorgulayıp stratejiyi kullanmak
shuffle
için bir "ipucu" sağlayın. Kaynak tablodaki en son kayıtlar şunlardır:- Örnek 1: sütununa
Id
göre karıştırma (kullanmayahint.shufflekey=Id
benzer şekilde):
set materialized_view_shuffle = dynamic([{"Name" : "ViewName", "Keys" : [ "Id" ] }]); ViewName
- Örnek 2: tüm anahtarlara göre karıştırma (kullanmaya
hint.strategy=shuffle
benzer şekilde):
set materialized_view_shuffle = dynamic([{"Name" : "ViewName" }]); ViewName
- Örnek 1: sütununa
Performans değerlendirmeleri
Gerçekleştirilmiş görünüm durumunu etkileyebilecek başlıca katkıda bulunanlar şunlardır:
- Küme kaynakları: Kümede çalışan diğer işlemler gibi gerçekleştirilmiş görünümler de kümedeki kaynakları (CPU, bellek) kullanır. Küme aşırı yüklenmişse, kümeye gerçekleştirilmiş görünümler eklemek kümenin performansında düşüşe neden olabilir. Küme durumu ölçümlerini kullanarak kümenizin durumunu izleyin. İyileştirilmiş otomatik ölçeklendirme şu anda otomatik ölçeklendirme kurallarının bir parçası olarak gerçekleştirilmiş görünümlerin sistem durumunu dikkate almaz.
- Gerçekleştirme işlemi , tüketebileceği bellek ve CPU miktarıyla sınırlıdır. Bu sınırlar gerçekleştirilmiş görünümler iş yükü grubunda tanımlanır ve değiştirilebilir.
Gerçekleştirilmiş verilerle örtüşme: Gerçekleştirme sırasında, son gerçekleştirmeden (delta) bu yana kaynak tabloya alınan tüm yeni kayıtlar işlenir ve görünümde gerçekleştirilir. Yeni kayıtlar ile zaten gerçekleştirilmiş kayıtlar arasındaki kesişim ne kadar yüksek olursa, gerçekleştirilmiş görünümün performansı o kadar kötü olur. Gerçekleştirilmiş görünüm, güncelleştirilen kayıt sayısı (örneğin, görünümde
arg_max
) kaynak tablonun küçük bir alt kümesiyse en iyi sonucu verir. Gerçekleştirilmiş görünüm kayıtlarının tümünün veya çoğunun her gerçekleştirme döngüsünde güncelleştirilmesi gerekiyorsa, gerçekleştirilmiş görünüm iyi performans göstermeyebilir.Alım oranı: Gerçekleştirilmiş görünümün kaynak tablosunda veri hacminde veya alım hızında sabit kodlanmış sınır yoktur. Ancak, gerçekleştirilmiş görünümler için önerilen alım oranı 1-2 GB/sn'den fazla değildir. Daha yüksek alım oranları yine de iyi performans gösterebilir. Performans veritabanı boyutuna, kullanılabilir kaynaklara ve mevcut verilerle kesişme miktarına bağlıdır.
- Kümedeki gerçekleştirilmiş görünümlerin sayısı: Yukarıdaki önemli noktalar, kümede tanımlanan her bir gerçekleştirilmiş görünüm için geçerlidir. Her görünüm kendi kaynaklarını kullanır ve birçok görünüm kullanılabilir kaynaklarda birbiriyle rekabet eder. Bir kümedeki gerçekleştirilmiş görünüm sayısı için sabit kodlanmış sınır olmasa da, küme çok sayıda tanımlı görünüm olduğunda tüm gerçekleştirilmiş görünümleri işleyemeyebilir. Kümede tek bir gerçekleştirilmiş görünümden fazlası varsa kapasite ilkesi ayarlanabilir. Eşzamanlı olarak daha fazla gerçekleştirilmiş görünüm çalıştırmak için ilkedeki değerini
ClusterMinimumConcurrentOperations
artırın.
- Gerçekleştirilmiş görünüm tanımı: Gerçekleştirilmiş görünüm tanımı, en iyi sorgu performansı için sorgu en iyi yöntemlerine göre tanımlanmalıdır. Daha fazla bilgi için bkz . Komut performansı ipuçları oluşturma.
Gerçekleştirilmiş görünüm üzerinde gerçekleştirilmiş görünüm
Kaynak gerçekleştirilmiş görünüm yinelenenleri kaldırma görünümüyse, gerçekleştirilmiş görünüm başka bir gerçekleştirilmiş görünüm üzerinden oluşturulabilir. Özellikle, kaynak gerçekleştirilmiş görünümün toplanması, kaynak kayıtların yinelenenlerini kaldırmak için olmalıdır take_any(*)
. İkinci gerçekleştirilmiş görünüm desteklenen toplama işlevlerini kullanabilir. Gerçekleştirilmiş görünüm üzerinde gerçekleştirilmiş görünüm oluşturma hakkında belirli bilgiler için bkz .create materialized-view
. komut.
İpucu
Başka bir gerçekleştirilmiş görünümde tanımlanan gerçekleştirilmiş bir görünümü sorgularken, gerçekleştirilmiş bölümü yalnızca işlevini kullanarak materialized_view()
sorgulamanızı öneririz. Her iki görünüm de tam olarak gerçekleştirilmediğinde görünümün tamamı sorgulanmaz. Daha fazla bilgi için bkz . Gerçekleştirilmiş görünüm sorguları.