Aracılığıyla paylaş


Sonuç kümesi önbelleğe alma (önizleme)

Şunlar için geçerlidir:✅ Microsoft Fabric'te SQL analiz uç noktası ve Ambarı

Sonuç kümesi önbelleğe alma (önizleme), Doku Veri Ambarı ve Lakehouse SQL analiz uç noktaları için okuma gecikmesini geliştiren yerleşik bir performans iyileştirmesidir.

Sonuç kümesi önbelleğe alma, SELECT T-SQL sorgularının nihai sonuç kümelerini kalıcı hale getirerek çalışır, böylece önbelleğe "isabet eden" sonraki sorgu çalıştırmaları sadece bu nihai sonuç kümelerini işler. Bu, özgün sorgunun karmaşık derlemesini ve veri işlemesini atlayabilir ve sonraki sorguları daha hızlı döndürebilir.

Veri ambarı senaryoları genellikle nispeten küçük bir sonuç elde etmek için büyük miktarda veriyi işleyen analiz sorgularını içerir. Örneğin, birden çok birleştirme içeren ve milyonlarca veri satırı üzerinde okuma ve karıştırma işlemleri gerçekleştiren bir SELECT sorgu, yalnızca birkaç satır uzunluğunda bir toplama işlemine neden olabilir. Aynı analiz sorgularını tekrar tekrar tetikleme eğiliminde olan raporlar veya panolar gibi iş yükleri için, nihai sonuç aynı kalsa bile aynı ağır hesaplama birden çok kez tetiklenebilir. Sonuç kümesi önbelleğe alma, bu ve benzer senaryolardaki performansı kabaca aynı maliyet için iyileştirir.

Önemli

Bu özellik önizleme aşamasındadır.

Önbelleğin otomatik yönetimi

Sonuç kümesi önbelleği saydam bir şekilde çalışır. Etkinleştirildikten sonra önbellek oluşturma ve yeniden kullanma, sorgular için fırsatçı olarak uygulanır.

Sonuç kümesi önbelleğe alma, ambar tablolarındaki T-SQL sorgularına SELECT , OneLake kaynaklarına yönelik kısayollara ve Azure dışı kaynaklara yönelik kısayollara uygulanır. Önbelleğin yönetimi otomatik olarak işlenir ve gerektiğinde düzenli olarak önbellek çıkarılır.

Ayrıca, verileriniz değiştikçe, daha önce oluşturulan önbellek geçersiz kılınarak sonuç tutarlılığı sağlanır.

Sonuç kümesi önbelleğini yapılandırma

Sonuç kümesi önbelleğe alma, öğe düzeyinde yapılandırılabilir.

Etkinleştirildikten sonra öğe düzeyinde veya gerekirse tek tek sorgular için devre dışı bırakılabilir.

Önizleme sırasında, sonuç kümesi önbelleğe alma tüm öğeler için varsayılan olarak kapalıdır.

Öğe düzeyi yapılandırması

Lakehouse veya ambar için sonuç kümesi önbelleğini etkinleştirmek için ALTER DATABASE SET T-SQL komutunu kullanın. T-SQL sorgularını bağlamak ve çalıştırmak için Lakehouse'un SQL analiz uç noktasını kullanın.

ALTER DATABASE <Fabric_item_name>
SET RESULT_SET_CACHING ON;

Ayar değeri sys.databases içinde denetlenebilir, örneğin Fabric Warehouse veya Lakehouse SQL analiz uç noktasında geçerli bağlamın değerini görmek için:

SELECT name, is_result_set_caching_on 
FROM sys.databases
WHERE database_id = db_id();

Sonuç kümesi önbelleğini devre dışı bırakmak için:

ALTER DATABASE <Fabric_item_name>
SET RESULT_SET_CACHING OFF;

Sorgu düzeyi yapılandırma

Bir öğede sonuç kümesi önbelleğe alma etkinleştirildikten sonra, tek bir sorgu için devre dışı bırakılabilir.

Bu, sorguda hata ayıklama veya A/B testi yapmak için yararlı olabilir. Bu ipucunu SELECT etiketinin sonuna ekleyerek sorgu için sonuç kümesi önbelleğini devre dışı bırakın.

OPTION ( USE HINT ('DISABLE_RESULT_SET_CACHE') );

Sonuç kümesi önbellek kullanımını denetleme

Sonuç kümesi önbellek kullanımı iki konumda denetlenebilir: İleti Çıktısı ve queryinsights.exec_requests_history sistem görünümü.

Sorgunun ileti çıkışında (Doku Sorgusu düzenleyicisinde veya SQL Server Management Studio'da görünür), sorgunun var olan bir sonuç kümesi önbelleğini kullanabilmesi durumunda sorgu yürütüldükten sonra "Sonuç kümesi önbelleği kullanıldı" deyimi görüntülenir.

Sonuç kümesi önbelleğinin kullanıldığını gösteren sorgunun sonuçlarından ekran görüntüsü.

queryinsights.exec_requests_history sütunundaresult_cache_hit, her sorgu yürütmesi için sonuç kümesi önbellek kullanımını gösteren bir değer görüntülenir:

  • 2: sorgu sonuç kümesi önbelleğini kullandı (önbellek isabeti)
  • 1: sorgu sonuç kümesi önbelleğini oluşturmuştur
  • 0: Sorgu, sonuç kümesi önbellek oluşturma veya kullanımı için geçerli değildi

Örneğin:

SELECT result_cache_hit, command, *
FROM queryinsights.exec_requests_history
ORDER BY submit_time DESC;

queryinsights.exec_requests_history görünümünde bir sorguyu gösteren Fabric sorgu düzenleyicisinin ekran görüntüsü.

Sonuç kümesi önbelleğe alma için yeterlilik kriterlerine uygun olma

Bir SELECT sorgu yayımlandığında, sonuç kümesi önbelleğe alma için değerlendirilir. Sonuç kümesi önbelleğini oluşturmaya ve kullanmaya uygun olmak için çeşitli gereksinimlerin karşılanması gerekir. Bazıları önbellek depolamayı dahili sınırlar içinde tutmaya yardımcı olurken, bazıları karmaşık sorgular için önbelleğe alma rezervi yapmaya yardımcı olur ve diğerleri yinelenen "vuruşlar" durumunda sonuç doğruluğunu korumaya yardımcı olur. Açık bir örnek, SELECT ile yapılan sorguların sonuçlarını önbelleğe almalarını kısıtlamaktırGETDATE(), ancak Fabric'in sonuçları önbelleğe almamayı seçtiği başka nüanslı durumlar da vardır.

Aşağıdaki liste, Microsoft Fabric Veri Ambarı'nda sonuç kümelerinin önbelleğe alınması için yaygın geçersizlikleri içerir. Sonuç kümesi önbelleği oluşturmak için bir sorgunun geçerli olmadığını fark ederseniz, bunun nedeni aşağıdakilerden biri veya birkaçı olabilir:

  • Sonuç kümesi önbelleğe alma şu anda bağlı olan ürün üzerinde etkin değil veya etkinleştirildi ama sorgu DISABLE_RESULT_SET_CACHE ipucunu içeriyordu.
  • Sorgu saf bir SELECT değildir, örneğin, CREATE TABLE AS SELECT (CTAS), SELECT-INTO veya diğer Veri Değiştirme Dili.
  • Sorgu bir sistem nesnesine, geçici tabloya, meta veri işlevine başvurur veya dağıtılmış nesnelere başvurmaz
  • Sorgu en az 100.000 satırlık en az bir tabloya başvurmuyor
  • Sorgu, o anda bağlı olan Doku öğesinin dışındaki bir nesneye başvurur (örneğin, veritabanları arası sorgu)
  • Sorgu açık bir işlem veya WHILE döngü içinde
  • Sorgu çıktısı desteklenmeyen bir veri türü ve/veya VARCHAR(MAX) veri türü ve/veya VARBINARY(MAX) veri türü içerir. Desteklenen veri türleri için bkz. Doku Veri Ambarı'nda veri türleri
  • Sorgu, CAST veya CONVERT ile tarih ya da sql_variant veri türüne başvuru içeriyor.
  • Sorgu çalışma zamanı sabitlerini (veya CURRENT_USERgibiGETDATE()) içerir
  • Sorgu sonucunun 10.000 satır olduğu > tahmin ediliyor
  • Sorgu, deterministik olmayan yerleşik işlevler, pencere toplama işlevleri veya PARTITION BY … ORDER BY gibi sıralı işlevler içerir. Bkz. Deterministic ve Nondeterministic Functions.
  • Sorgu dinamik veri maskeleme, satır düzeyi güvenlik veya diğer güvenlik özelliklerini kullanır
  • Sorguda zaman yolculuğu kullanılıyor
  • Sorgu, sorgu çıkışına dahil olmayan bir sütuna veya ifadeye ORDER BY uygular
  • Sorgu, varsayılan olmayan değerlere sahip oturum düzeyi SET deyimleri olan bir oturumdadır (örneğin, ayarı QUOTED_IDENTIFIEROFF)
  • Sistem önbellek için iç sınırlara ulaştı. Arka plan önbelleği çıkarma işlemleri, yeni önbellek oluşturulmadan önce alan boşaltır.

Bu kurallar, aynı sorgunun sonraki çalıştırmalarında önbelleği yeniden kullanmak için de geçerlidir. Ayrıca, aşağıdaki senaryolarda önbellek kullanılamayabilir:

  • Önbellek oluşturulduktan sonra başvuruda bulunan tablolarda yapılan tüm değişiklikler
  • Bellek içi ve disk önbelleğine benzer şekilde önbellek oluşturulduktan sonra çalışma alanı çevrimdışına geçti
  • Kullanıcının sorgudaki nesneler için yeterli izinleri yok
  • Sorgu, özgün sorgunun verildiği konumdan farklı bir göl evi veya ambar bağlantısından çağrılır. (Veritabanları arası sorgular sonuç kümesi önbelleği için uygun değildir.)
  • Sorgu özgün sorgudan farklı çıkış sütunları, sütun sıralama veya diğer adlar kullanıyor
  • Önbelleğe alınan sorgu 24 saat içinde kullanılmadı

Uyarı

Bu nitelikler, sonuç kümesi önbelleğinin en iyi şekilde uygulanması için dahili olarak değerlendirildiğinden, gelecekte güncelleştirilebileceklerini aklınızda bulundurmak önemlidir.