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.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Analiz Platformu Sistemi (PDW)
seçeneği optimize for ad hoc workloads , birçok tek kullanımlık geçici toplu iş içeren iş yükleri için plan önbelleğinin verimliliğini artırmak için kullanılır. Bu seçenek olarak ayarlandığında 1Veritabanı Altyapısı, tam derlenmiş plan yerine ilk kez bir toplu iş derlendiğinde plan önbelleğinde küçük bir derlenmiş plan saplaması depolar. Bu seçenek, plan önbelleğinin yeniden kullanılmayan derlenmiş planlarla doldurulmasına izin vermeyerek bellek baskısını hafifletmeye yardımcı olabilir. Ancak bu seçeneği etkinleştirmek, tek kullanımlık planlarda sorun giderme yeteneğinizi etkileyebilir.
Derlenen plan saplaması, Veritabanı Altyapısı'nın bu geçici toplu işlemi daha önce derlendiğini ve yalnızca derlenmiş bir plan saplama depoladığını tanımasını sağlar. Bu toplu iş yeniden çağrıldığında (derlendiğinde veya yürütüldü), Veritabanı Altyapısı toplu işlemi derler, derlenmiş plan saplamasını plan önbelleğinden kaldırır ve tüm derlenmiş planı plan önbelleğine ekler.
Katalog görünümünü sorgulayarak sys.dm_exec_cached_plans ve sütunda "Derlenmiş Plan" arayarak derlenmiş plan saplamalarını cacheobjtype bulabilirsiniz. Saplamanın benzersiz plan_handlebir değeri vardır. Derlenen plan saplamasıyla ilişkilendirilmiş bir yürütme planı yoktur ve plan tutamacını sorgulamak grafik veya XML showplan döndürmez.
İzleme bayrağı 8032 , önbellek sınırı parametrelerini genel olarak önbelleklerin daha büyük olmasını sağlayan SQL Server 2005 (9.x) RTM ayarına geri çevirir. Sık kullanılan önbellek girişleri önbelleğe sığmadığında optimize for ad hoc workloads ve seçenek plan önbelleğiyle ilgili sorunu çözemediğinde bu ayarı kullanın.
Uyarı
İz bayrağı 8032, büyük önbelleklerin arabellek havuzu gibi diğer bellek tüketicileri için daha az bellek kalmasına neden olarak düşük performansa yol açabilir.
Açıklamalar
seçeneğin optimize for ad hoc workloads1 ayarlanması yalnızca yeni planları etkiler; zaten plan önbelleğinde olan planlar etkilenmez.
Önceden önbelleğe alınmış sorgu planlarını hemen etkilemek için plan önbelleğinin ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE kullanılarak temizlenmesi gerekir veya SQL Server'ın yeniden başlatılması gerekir.
Recommendations
Plan önbelleğinde çok sayıda tek kullanımlık plan kullanmaktan kaçının. Yaygın nedenler şunlardır:
Tutarlı olarak tanımlanmayan sorgu parametrelerinin veri türleri. Bu özellikle dizelerin uzunluğu için geçerlidir, ancak maksimum boyut, duyarlık veya ölçek içeren herhangi bir veri türüne uygulanabilir. Örneğin, adlı
@Greetingbir parametre bir çağrıda nvarchar(10) ve sonraki çağrıda nvarchar(20) olarak geçirilirse, her parametre boyutu için ayrı planlar oluşturulur.Parametrelendirilmemiş sorgular. Bir sorgu, sabit kodlanmış değerlerin Veritabanı Altyapısı'na gönderildiği bir veya daha fazla parametreye sahipse, her sorgu için çok sayıda sorgu planı olabilir. Kullanılan sorgu parametresi veri türlerinin ve uzunluklarının her birleşimi için planlar mevcut olabilir.
Tek kullanımlık plan sayısı OLTP sunucusundaki SQL Server Veritabanı Altyapısı belleğinin önemli bir bölümünü alıyorsa ve bu planlar geçici planlarsa, bu nesnelerle bellek kullanımını azaltmak için bu sunucu seçeneğini kullanın.
optimize for ad hoc workloads Seçenek etkinse, yalnızca plan saplaması önbelleğe alınmış olduğundan tek kullanımlık sorgular için yürütme planlarını görüntüleyemezsiniz. Ortamınıza ve iş yükünüze bağlı olarak, aşağıdaki iki özellikten yararlanabilirsiniz:
SQL Server 2016'da (13.x) sunulan Sorgu Deposu özelliği, sorgu planı değişikliklerinin neden olduğu performans farklarını hızla bulmanıza yardımcı olur. Sorgu Deposu, SQL Server 2022 (16.x) ve sonraki sürümlerdeki yeni veritabanlarında varsayılan olarak etkindir.
Zorlamalı parametreleştirme , sorgu derlemelerinin ve yeniden derlemelerinin sıklığını azaltarak belirli veritabanlarının performansını artırabilir. Zorlamalı parametreleştirmeden yararlanan veritabanları genellikle satış noktası uygulamaları gibi kaynaklardan gelen yüksek hacimli eşzamanlı sorgularla karşılaşır.
Zorlamalı parametreleştirme, parametre duyarlılığı nedeniyle performans sorunlarına neden olabilir. Daha fazla bilgi için bkz . Parametreye duyarlı sorunları araştırma ve çözme. SQL Server 2022 (16.x) ve sonraki sürümler için Parametre Duyarlı Plan iyileştirmesini de etkinleştirebilirsiniz.
Örnekler
Tek kullanımlık önbelleğe alınmış plan sayısını bulmak için aşağıdaki sorguyu çalıştırın:
SELECT objtype,
cacheobjtype,
SUM(refcounts) AS AllRefObjects,
SUM(CAST(size_in_bytes AS BIGINT)) / 1024 / 1024 AS SizeInMB
FROM sys.dm_exec_cached_plans
WHERE objtype = 'Adhoc'
AND usecounts = 1
GROUP BY objtype, cacheobjtype;