Gerçekleştirilmiş görünümler
Gerçekleştirilmiş görünümler, bir toplama sorgusunu bir 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ş 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 gerekenleri 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 bölümündeki ö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ş görünümü sorgulamak genellikle aynı toplama işlevleri için kaynak tabloyu sorgulamaktan daha iyi performans gösterir.
Taze: 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ş görünümü sorgulamak , kümeden 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ın bulunduğu ve zaten 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 sonucunu sağlar. Çevrimdışı gerçekleştirme işlemi , deltadan gerçekleştirilmiş tabloya yeni kayıtlar 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 durumların nasıl giderildiğine ilişkin 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ü henüz gerçekleştirilmemiş kaynak tablodaki kayıtlarla birleştirir (
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ümdeki 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 için istekli olduğu 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, performans açısından yeniliği feda etmek istediğiniz senaryolar için kullanışlıdır( örneğin telemetri panoları için).
İpucu
Gerçekleştirilmiş parçadaki sorgular her zaman görünümün tamamını sorgulamaktan daha iyi performans gösterir. Kullanım örneğiniz için 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 aramalara 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üm sorgu iyileştiricisi
Görünümün tamamı sorgulanırken, gerçekleştirilmiş bölüm sorgu süresi boyunca 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 gruplandırma filtrelerini içeriyorsa, görünümün tamamını sorgulamak daha iyi bir performans gösterir. Performans ipuçları bölümünde sorgu deseninize 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ı | Tür | Description |
---|---|---|
materialized_view_query_optimization_costbased_enabled |
bool |
olarak ayarlanırsa false , gerçekleştirilmiş görünüm sorgularında özetleme/birleştirme iyileştirmelerini devre dışı bırakır. Varsayılan stratejileri kullanır. true varsayılan değerdir. |
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. |
Örnekler
Görünümün tamamını sorgular. Kaynak tablodaki en son kayıtlar şunlardır:
ViewName
En son ne zaman gerçekleştirildiğine bakılmaksızın görünümün yalnızca gerçekleştirilmiş bölümü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 tuşlara göre karıştırma (kullanmaya
hint.strategy=shuffle
benzer şekilde):
set materialized_view_shuffle = dynamic([{"Name" : "ViewName" }]); ViewName
- Örnek 1: sütununa
Performansla ilgili önemli noktalar
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 bir düşüşe neden olabilir. Küme sistem 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 almamaktadır.
- Gerçekleştirme işlemi, kullanabileceğ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 çakışma: Gerçekleştirme sırasında, son gerçekleştirmeden (delta) sonra kaynak tabloya alınan tüm yeni kayıtlar işlenir ve görünümde gerçekleştirilir. Yeni kayıtlar ve 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 hızı 1-2 GB/sn'den fazla değildir. Daha yüksek alım oranları hala iyi performans gösterebilir. Performans küme boyutuna, kullanılabilir kaynaklara ve mevcut verilerle kesişim 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 kullanılabilir kaynaklarda birçok görünüm birbiriyle rekabet eder. Bir kümedeki gerçekleştirilmiş görünümlerin sayısı için sabit kodlanmış sınır olmasa da, küme çok fazla tanımlı 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. Daha gerçekleştirilmiş görünümleri eşzamanlı olarak ç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, başka bir gerçekleştirilmiş görünüm üzerinden gerçekleştirilmiş görünüm oluşturulabilir. Özellikle, kaynak gerçekleştirilmiş görünümün toplaması, 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 üzerinden 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ş 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ı.
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin