Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sonuç kümesi önbelleğe alma etkinleştirildiğinde, ayrılmış SQL havuzu sorgu sonuçlarını yinelenen kullanım için kullanıcı veritabanında otomatik olarak önbelleğe alır. Bu, sonraki sorgu yürütmelerinin sonuçları doğrudan kalıcı önbellekten almasına olanak tanır, bu nedenle yeniden derleme gerekmez. Sonuç kümesi önbelleğe alma, sorgu performansını artırır ve işlem kaynağı kullanımını azaltır. Ayrıca, önbelleğe alınmış sonuç kümesi kullanan sorgular herhangi bir eşzamanlılık yuvası kullanmaz ve bu nedenle mevcut eşzamanlılık sınırlarına karşı sayılmaz. Güvenlik için, kullanıcılar önbelleğe alınan sonuçlara yalnızca önbelleğe alınmış sonuçları oluşturan kullanıcılarla aynı veri erişim izinlerine sahip olmaları durumunda erişebilir. Sonuç kümesi önbelleğe alma, veritabanı ve oturum düzeylerinde varsayılan olarak KAPALI'dır.
Uyarı
Sonuç kümesi önbelleğe alma DECRYPTBYKEY ile birlikte kullanılmamalıdır. Bu şifreleme işlevinin kullanılması gerekiyorsa, yürütme sırasında sonuç kümesi önbelleğinin devre dışı bırakıldığından ( oturum düzeyinde veya veritabanı düzeyinde) emin olun.
Tuş komutları
Kullanıcı veritabanı için AÇI/KAPALI sonuç kümesi önbelleğini açma
Oturum için AÇI/KAPALI sonuç kümesi önbelleğe alma özelliğini açma
Önbelleğe alınmış sonuç kümesinin boyutunu denetleme
Önbelleğe alınmayanlar
Bir veritabanı için sonuç kümesi önbelleğe alma açık olduğunda, bu sorgular dışında sonuçlar önbellek dolana kadar tüm sorgular için önbelleğe alınır:
- Temel tabloların verilerinde veya sorgusunda bir değişiklik olmasa bile belirlenimci olmayan yerleşik işlevlere veya çalışma zamanı ifadelerine sahip sorgular. Örneğin, DateTime.Now(), GetDate().
- Kullanıcı tanımlı işlevleri kullanan sorgular
- Satır düzeyi güvenliği olan tabloları kullanan sorgular
- Satır boyutu 64 KB'tan büyük olan verileri döndüren sorgular
- Büyük boyutlu veri döndüren sorgular (>10 GB)
Uyarı
- Belirli olmayan bazı işlevler ve çalışma zamanı ifadeleri, aynı verilere karşı yinelenen sorgular için belirleyici olabilir. Örneğin, ROW_NUMBER().
- Sorgu sonuç kümesindeki satırların sırası/dizilimi uygulama mantığınız için önemliyse sorgunuzda ORDER BY kullanın.
- ORDER BY sütunlarındaki veriler benzersiz değilse, order by sütunlarında aynı değerlere sahip satırlar için garantili satır sırası yoktur; sonuç kümesi önbelleğe alma etkinleştirildiğinden veya devre dışı bırakıldığından bağımsız olarak.
Önemli
Sonuç kümesi önbelleği oluşturma ve önbellekten veri alma işlemleri, ayrılmış bir SQL havuzu örneğinin denetim düğümünde gerçekleşir. Sonuç kümesi önbelleğe alma açık olduğunda, büyük sonuç kümesi döndüren sorguların çalıştırılması (örneğin, >1 GB) denetim düğümünde yüksek kısıtlamaya neden olabilir ve genel olarak sorgu yanıtını yavaşlatabilir. Bu sorgular genellikle veri keşfi veya ETL işlemleri sırasında kullanılır. Denetim düğümünün strese girmemesi ve performans sorununa neden olması için kullanıcıların bu tür sorguları çalıştırmadan önce veritabanında off sonuç kümesi önbelleğe alma özelliğini kapatması gerekir.
Bir sorgu için sonuç kümesi önbelleğe alma işlemleri tarafından geçen süre için bu sorguyu çalıştırın:
SELECT step_index, operation_type, location_type, status, total_elapsed_time, command
FROM sys.dm_pdw_request_steps
WHERE request_id = <'request_id'>;
Sonuç kümesi önbelleğe alma devre dışı bırakılmış bir sorgu için örnek çıktı aşağıda verilmiştir.
Sonuç kümesi önbelleğe alma etkin olarak yürütülen bir sorgu için örnek çıktı aşağıda verilmiştir.
Önbelleğe alınan sonuçlar kullanıldığında
Aşağıdaki gereksinimlerin tümü karşılanırsa, önbelleğe alınan sonuç kümesi sorgu için yeniden kullanılır:
- Sorguyu çalıştıran kullanıcının sorguda başvuruda bulunan tüm tablolara erişimi vardır.
- Yeni sorgu ile sonuç kümesi önbelleğini oluşturan önceki sorgu arasında tam bir eşleşme vardır.
- Önbelleğe alınan sonuç kümesinin oluşturulduğu tablolarda veri veya şema değişikliği yoktur.
Bu komutu çalıştırarak bir sorguyu bir sonuç önbelleği isabetiyle mi yoksa yanıtsız mı çalıştırıp yürütmediğini denetleyin. result_cache_hit sütunu, önbellek isabeti için 1, önbellek kaçırma için 0 ve sonuç kümesi önbelleğe alınmadığında bunun nedenine bağlı olarak negatif değerler döndürür. Detayları görmek için sys.dm_pdw_exec_requests kontrol edin.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Önbelleğe alınan sonuçları yönetme
Sonuç kümesi önbelleğinin boyut üst sınırı veritabanı başına 1 TB'tır. Temel alınan sorgu verileri değiştiğinde önbelleğe alınan sonuçlar otomatik olarak geçersiz kılınır.
Önbellek çıkarma işlemi, bu zamanlamaya göre ayrılmış SQL havuzu tarafından otomatik olarak yönetilir:
- Sonuç kümesi kullanılmadıysa veya geçersiz kılındıysa 48 saatte bir.
- Sonuç kümesi önbelleği boyut üst sınırına yaklaştığında.
Kullanıcılar şu seçeneklerden birini kullanarak sonuç kümesi önbelleğinin tamamını el ile boşaltabilir:
- Veritabanı için sonuç kümesi önbellek özelliğini KAPALI duruma getirin
- Veritabanına bağlıyken DBCC DROPRESULTSETCACHE çalıştırma
Veritabanının duraklatılması önbelleğe alınmış sonuç kümesini boşaltmaz.
Sonraki Adımlar
Daha fazla geliştirme ipucu için bkz . geliştirmeye genel bakış.