Aracılığıyla paylaş


Tasarlama ve uygulama planı kılavuzları

Olamaz ya da doğrudan sorgu metnini değiştirmek istemiyor, sorguların performansını arttırmak için plan kılavuzları kullanabilirsiniz.Sorgu ipuçları veya sabit bir sorgu planı için eklemeden tarafından sorguları planı kılavuzları etki iyileştirme.Plan kılavuzları aşağıdaki bağlamlarda yürütülen sorguları eşleşecek şekilde oluşturulabilir:

  • Bir object plan Kılavuzu yürütmek bağlamında sorguları eşleşir Transact-SQL saklı yordamlar, kullanıcı tanımlı skaler İşlevler, multi-deyim kullanıcı tanımlı tablo değerli işlevler ve dml Tetikleyiciler.

  • Sorguları yürütmek bağlamında tek başına bir sql plan Kılavuzu eşleşen Transact-SQL ifadeler ve toplu işlemleri olan parçası olmayan bir veritabanı nesnesi.sql tabanlı planı kılavuzları stratejisinin belirli bir formu sorguları eşleştirmek için de kullanılabilir.

  • Belirli bir formu stratejisinin tek başına sorguları bir şablon plan Kılavuzu eşleşir.Bu planı kılavuzları geçerli PARAMETERİZASYONUNU veritabanı sorguları bir sınıf için bir veritabanı ayarlama seçeneği geçersiz kılmak için kullanılır.

Daha fazla bilgi için bkz: Plan kılavuzları anlama.

Toplam oluşturabilmeniz için plan kılavuzları yalnızca kullanılabilir sistem kaynakları ile sınırlıdır.Yine de, plan kılavuzları bekle veya geliştirilmiş performans için hedeflenen kritik sorguları için sınırlı olmalıdır.Plan kılavuzları dağıtılan uygulama sorgu yükünü çoğunu etkileyen kullanılmamalıdır.

Re-evaluating ve plan Kılavuzu tanımları, uygulamanız için yeni bir sürümünü yükseltirken test öneririz SQL Server.Performans ayarlama gereksinimleri ve plan Kılavuzu eşleşen davranışını değiştirebilir.Geçersiz bir plan Kılavuzu bir sorgunun başarısız olmasına neden olur, ancak planı plan Kılavuzu kullanmadan derlenir.Bir veritabanını yükselttikten sonra varolan planı kılavuzları kullanarak doğrulamak için aşağıdaki görevleri yerine öneririz sys.fn_validate_plan_guide işlev.Alternatif olarak, geçersiz planı kılavuzları kullanarak izleyebilmeniz için Plan Kılavuzu başarısız olay SQL Server Profiler.

Not

Plan kılavuzları yalnızca kullanılabilir SQL Server ; Standart, geliştirici, değerlendirme ve Kurumsal sürümleri Ancak, herhangi bir sürümündeki planı kılavuzları görülebilir.Plan kılavuzları, herhangi bir sürümünü içeren bir veritabanı da ekleyebilirsiniz.Plan kılavuzları kalır geri yükleme yüklemek veya bir veritabanı eklemek için yükseltilmiş sürüm olduğu gibi SQL Server.

Sorgu ipuçları için bir Plan kılavuz iliştirme

Geçerli sorgu ipuçları herhangi bir bileşimini bir plan Kılavuzu'nda kullanılabilir.Bir plan Kılavuzu bir sorguyla eşleşen derler ve en iyi duruma getirir önce bir plan Kılavuzu ipuçları yan tümce tümce tümcesinde belirtilen seçenek yan tümce tümce tümce sorguya eklenir.Bir plan Kılavuzu zaten eşleşen sorgu bir seçenek yan tümce tümce tümce varsa, plan Kılavuzu'nda belirtilen sorgu ipuçları sorgu içindeki yerini alır.Metin içinde eşleşen sorgu belirtirken ancak bir seçenek yan tümce tümce tümce içeren bir sorgu eşleştirmek bir plan kılavuzu için seçenek yan tümce tümce tümce sorgunun eklemeniz gerekir sp_create_plan_guide deyim.Bunları değiştirmek yerine, sorgunuzu zaten ipuçları eklenecek plan Kılavuzu'nda belirtilen ipuçları istiyorsanız, özgün ipuçlarını hem de ek ipuçları plan Kılavuzu seçeneği yan tümce tümce tümcesinde belirtmeniz gerekir.

Dikkat notuDikkat

Sorgu ipuçları kötüye planı kılavuzları, derleme, yürütme veya performans sorunlarına neden olabilir.Plan kılavuzları yalnızca deneyimli geliştiriciler ve veritabanı yöneticileri tarafından kullanılması gerekir.

Plan kılavuzları kullanılan yaygın sorgu ipuçları

Planın kılavuzları yararlanabilir sorgular genelde parametre tabanlı ve parametre değerlerini en temsilcisi veya en kötü durum senaryosu temsil önbelleğe alınan sorgu planlarını kullandıkları için kötü gerçekleştiriyor olabilir.Bu sorunu gidermek üzere yeniden sorgu ipuçları ve en iyi duruma GETİRMEK için kullanılabilir.En İYİLEŞTİR için söyler SQL Server sorgu en iyi duruma getirilmiş özel bir değer parametre için kullanılacak.Bir sorgu planı yeni bir sorgu planı sonraki yeniden derlemek için sorgu iyileştiricisi zorlama yürütme sonrasında atmak için sunucuyu yeniden söyler saat , aynı sorgu yürütülür.Bir örnek için bkz: Plan kılavuzları anlama.

Buna ek olarak, dizin ve forceseek tablo ipuçları sorgu ipuçları belirtebilirsiniz.Sorgu ipuçları belirtildiğinde, bu ipuçları bir satır içi tablo ya da Görünüm ipucu gibi davranır.Dizin ipucu, yalnızca belirtilen dizinler başvurulan tablo veya görünümü veri erişim için kullanılacak sorgu iyileştiricisi zorlar.forceseek ipucu dizin arama yalnızca işlem başvurulan tablo veya görünümü'nde verilere erişmek için kullanmak üzere en iyi duruma getiricisi zorlar.Bu ipuçları, ek plan Kılavuzu işlevselliği sağlar ve plan Kılavuzu kullanan sorguları en iyi duruma getirilmesi üzerinde daha fazla etki olanak sağlar.Bir örnek için bkz: Dizin ve forceseek sorgu ipuçları planı kılavuzları kullanarak.

Bir sorgu planı için bir Plan kılavuz iliştirme

Belirli bir sorgu için en iyi duruma getiricisi tarafından seçilmiş olandan daha iyi bir varolan yürütme planı farkında olduğunuz sabit sorgu planı uygulama planı kılavuzları yararlı olur.Bir sorgu için sabit bir plan uygulanıyor, anlamına gelir sorgu iyileştiricisi değişiklikler istatistikleri ve dizinler için sorgu planı artık uyarlayabilirsiniz.Ne zaman sabit sorgu planları kullanmak için otomatik olarak veri dağıtım planı uyum becerisinin sabit bir planı uygulama yararlarını karşılaştırın ve kullanılabilen dizinler değiştirmek emin planı kılavuzları dikkate alın.

Bir özel bir sorgu planı ekleyebilirsiniz bir plan kılavuzu belirterek planın xml Showplan xml_showplan parametresinde sp_create_plan_guide deyim veya önbelleğe alınmış bir plan içinde plan tanıtıcı belirterek sp_create_plan_guide_from_handle deyim.Bu yöntemlerin her ikisi de sabit sorgu planını hedeflenen sorguya uygulanır.

Kılavuzu gereksinimleri eşleşen planlayın

Plan kılavuzları içinde oluşturuldukları veritabanı kapsamına eklenir.Bu nedenle, bir sorgu yürütüldüğünde, geçerli veritabanında varolan tek planı kılavuzları sorguya eşleştirilir.Örneğin, AdventureWorks2008R2 geçerli veritabanı ve aşağıdaki sorguyu yürütür:

SELECT FirstName, LastName FROM Person.Person;

Yalnızca planı kılavuzları AdventureWorks2008R2 veritabanı uygun eşleşen için bu sorgu.

Ancak, AdventureWorks2008R2 geçerli veritabanı ve aşağıdaki deyimleri çalıştırılır:

USE DB1;

GO

SELECT FirstName, LastName FROM Person.Person;

Yalnızca planı kılavuzları DB1 eşleşen sorgu bağlamında sorgu yürütülürken çünkü uygun olan DB1.

Kılavuzları, sql veya şablonu temel plan için SQL Server eşleşen değerleri @ module_or_batch ve @ params iki karakter değerleri karşılaştırarak bir sorgu için bağımsız değişkenler.Bu metin sağlamak gerekir anlamına gelir tam olarak SQL Server alır, gerçek toplu iş iş.

Zaman türü = 'sql' ve @ module_or_batch değeri null olarak küme @ module_or_batch değerine küme @ stmt.Bu değeri anlamına gelir statement_text tam olarak aynı biçiminde sağlanan karakter-için-karakteri için göndermiş gibi SQL Server.Bu KAÇINCI kolaylaştırmak için iç dönüştürme gerçekleştirilir.

Genellikle, planı kılavuzları kullanarak test etmelisiniz SQL Server Profiler doğrulamak, sorgunuzu eşleşen plan Kılavuzu.Sınama sql veya şablon tabanlı plan kılavuzları gelen toplu işlemleri çalıştırarak SQL Server Management Studio verir beklenmeyen sonuçlar.Daha fazla bilgi için bkz: Oluşturmak ve sınamak için SQL Server Profiler'I kullanarak Plan kılavuzları.

Not

Oluşturmak istediğiniz deyim içeren toplu iş iş bir plan kılavuzu bir kullanım içeremez database deyim.

Plan Kılavuzu planı önbellek etkisi

Bir plan kılavuzu oluşturma modülü, bu modül için sorgu planı plan önbellekten kaldırır.Nesne veya sql türü bir plan kılavuzu üzerinde bir toplu işlem oluşturmak için aynı karma değerine sahip bir toplu iş sorgu planı kaldırır.ŞABLON türü bir plan kılavuzu oluşturma kaldırır - tüm tekdeyim o veritabanındaki planı önbellekten toplu işlemleri.

Plan Kılavuzu deyimleri

Oluşturmak için birplan kılavuzu

Devre dışı bırakmak için etkinleştirmek veya plan kılavuzları bırak

Geçerli veritabanında planı kılavuzları hakkında bilgi edinmek için

Bir plan Kılavuzu doğrulamak için