Aracılığıyla paylaş


Kılavuzlar, tasarım ve uygulama planı

Plan kılavuzları, açamıyor veya sorgu metnini doğrudan değiştirmek istemiyorsanız, sorgu performansını en iyi duruma getirmek için kullanabilirsiniz.Kılavuzları etki iyileştirme planı için ekleme sorgusu ipuçlarının ya da bir sabit bir sorgu planı tarafından sorgularının.Plan kılavuzları, aşağıdaki bağlamlarda çalıştırılan sorgulara eşleşecek şekilde oluşturulabilir:

  • Bir NESNE plan kılavuzu bağlamında yürütmek sorguları ile eşleşir. Transact-SQL yordamlar, kullanıcı tanımlı skaler fonksiyonları, multi-deyim kullanıcı tanımlı tablo değerli işlevler ve DML Tetikleyicileri depolanır.

  • Bir SQL plan kılavuzu bağlamında tek başına yürütmek sorgu eşleşir. Transact-SQL ifadeler ve bir veritabanı nesnesini bir parçası olan toplu işlemleri. SQL tabanlı planı kılavuzları, belirtilen bir forma parameterize sorgularını eşleştirmek için de kullanılabilir.

  • Bir TEMPLATE plan kılavuzu belirtilen forma parameterize tek başına bir sorgu eşleşir.Bu plan kılavuzları, geçerli PARAMETERIZATION veritabanı sınıf sorguları için bir veritabanının küme seçeneği geçersiz kılmak için kullanılır.

Daha fazla bilgi için bkz:Plan Kılavuzları'nı anlama.

Toplam planı kılavuzları oluşturabilirsiniz, yalnızca kullanılabilir sistem kaynaklarınca sınırlandırılır.Yine de, planı kılavuzları için performansı iyileştirilmiş veya stabilized hedeflenen kritik sorgulara sınırlandırılmalıdır.Plan kılavuzları, dağıtılmış bir uygulamanın sorgu yük çoğunu etkileyen için kullanılmamalıdır.

Re-evaluating ve uygulamanız için yeni bir sürümünde yükselttiğinizde, plan kılavuzu tanımları sınama öneririz. SQL Server. Performans ayarlama gereksinimleri ve plan kılavuzu eşleşen davranışını değiştirebilir.Planı plan kılavuzu kullanmadan bir geçersiz plan kılavuzu bir sorgunun başarısız olmasına neden olur, ancak derlendi.Bir veritabanına yükselttikten sonra SQL Server 2008, varolan planı kılavuzları kullanarak doğrulamak için aşağıdaki görevleri gerçekleştirmeniz önerilir sys.fn_validate_plan_guide işlev.Alternatif olarak, kullanarak geçersiz plan kılavuzu s izleyebilirsiniz plan kılavuzu Başarısız olay in SQL Server Profiler.

Not

Plan kılavuzları yalnızca kullanılabilir SQL Server Standart, Enterprise Developer ve değerlendirme sürümleri; ancak, herhangi bir sürümünde planı kılavuzları görülebilir. Ayrıca, herhangi bir sürümü için plan kılavuzları içeren bir veritabanı iliştirebilirsiniz.geri yükleme yüklemek veya bir veritabanı yükseltilmiş bir sürüm için iliştirin planı kılavuzları sağlam kalır SQL Server 2008.

Query ipuçları bir Plan Kılavuzu'na ekleme

Herhangi bir birleşimi geçerli sorgu ipuçları planı kılavuz olarak kullanılabilir.Bir plan kılavuzu sorguda eşleştiğinde, derler ve en iyi duruma getirir önce bir plan kılavuzu ipuçları yan tümcesinde belirtilen SEÇENEK yan tümce sorguya eklenir.Sorguda bir plan kılavuzu zaten eşleşen bir SEÇENEK yan tümce varsa, bu sorgu planı kılavuzda belirtilen sorgu ipuçları değiştirin.Sorgunun sp_create_plan_guide deyiminde eşleşmesi için metni belirttiğinizde ancak, bir SEÇENEK yan tümce içeren sorgu eşleştirmek bir plan kılavuzu, OPTION sorgu yan tümcesinde eklemeniz gerekir.Bunları değiştirmek yerine sorguya, zaten varolan ipuçları eklenecek plan kılavuzu belirtilen ipuçları isterseniz, özgün ipuçları hem de ek ipuçları SEÇENEĞINI belirtmelisiniz yan tümce planı kılavuzun.

Uyarı

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öneticiler tarafından kullanılmalıdır.

Plan Kılavuzlar'da kullanılan genel sorgu ipuçları

Plan kılavuzlardan yararlanabilir sorguları genel parametre tabanlıdır ve bir en kötü Durum ya da en temsilcisi senaryosu, parametre değerlerini temsil etmeyen önbelleğe alınan sorgu planlarını kullandıkları için kötü gerçekleştirme olması.Bu sorunu gidermek amacıyla RECOMPILE sorgu ipuçları ve en iyi duruma GETIRMEK IÇIN kullanılabilir.EN IÇIN yönlendirir. SQL Server sorguyu en iyi duruma getirilmiştir olduğunda, belirli bir değeri için bir parametre kullanmak için . RECOMPILE sunucu a query plan aynı sorgu yürütüldükten sonraki açışınızda yeni bir sorgu planını yeniden derlemek için sorgu iyileştiricisi için zorlama, yürütme sonrasında atmak için yönlendirir.Bir örnek için bkz: Plan Kılavuzları'nı anlama.

Buna ek olarak, INDIS ve FORCESEEK tablo ipuçlarını sorgu ipuçları belirtebilirsiniz.Bu ipuçları, sorgu ipuçları belirtildiğinde, bir satır içi tablo veya Görünüm ipucu gibi davranır.DIZIN ipucu, yalnızca belirtilen dizinler başvurulan tabloyu veya görünümü içindeki verilere erişmek için kullanılacak sorgu iyileştiricisi zorlar.Dizin arama yalnızca işlem içinde başvurulan veriye erişmek için kullanılacak en iyi duruma getiricisi FORCESEEK ipucu zorlar tablo veya Görünüm.Bu ipuçları, ek plan kılavuzu işlevselliği sağlamak ve plan kılavuzu kullanan sorguları en iyi duruma getirilmesi üzerinde daha fazla etki olanak sağlar.Bir örnek için bkz: INDIS ve FORCESEEK sorgu ipuçları planı Kılavuzlar'kullanma.

Bir sorgu planı Plan Kılavuzu'na ekleme

Bir sabit bir sorgu planı uygulama planı kılavuzları, belirli bir sorgu için en iyi duruma getiricisi tarafından seçilmiş olandan daha iyi gerçekleştirdiği varolan yürütme planı haberdar olduğunda yararlıdır.Bir sorgu için sabit bir planı uygulama sorgu iyileştiricisi için değişiklikleri istatistiklerini ve dizinler için Sorgu planını artık uyarlayabilirsiniz anlamı olmadığını unutmayın.Zaman planı kılavuzları, sabit bir sorgu planları kullanır, yüklenememesi gibi otomatik olarak veri dağıtım planı uyarlamak için sabit bir planı uygulama yararlarını karşılaştırın ve kullanılabilir dizinleri değiştirmek emin göz önünde bulundurun.

Planı içinde XML gösterim planı belirterek bir özel bir sorgu planı için bir plan kılavuzu iliştirebilirsiniz xml_showplan parametre sp_create_plan_guide deyim veya önbelleğe alınmış bir planı plan tanıtıcı belirterek sp_create_plan_guide_from_handle ekstresi.Bu yöntemlerin her ikisi de sabit bir sorgu planını hedeflenen sorguya uygulanır.

plan kılavuzu Eşleşen gereksinimleri

Plan kılavuzları, oluşturuldukları veritabanına kapsamına eklenir.Bu nedenle, bir sorgu yürütüldüğünde, geçerli veritabanında varolan planı kılavuzları yalnızca sorguya eşlenmesi.Örneğin, AdventureWorks Geçerli veritabanında, aşağıdaki sorguyu yürütür:

SELECT * FROM Person.Contact;

Içinde yalnızca bir plan kılavuzları AdventureWorks Veritabanı bu sorguda eşlenmesi uygun.

Ancak, AdventureWorks Geçerli veritabanı ve aþaðýdaki çalışır:

DB1; KULLANIN.

GİT

SELECT * FROM Person.Contact;

Yalnızca kılavuzları planlayın. DB1 Sorgu Yürütülüyor bağlamında çünkü sorguya eşlenmesi uygundur DB1.

SQL veya TEMPLATE temel plan kılavuzları SQL Server Sorguda @ module_or_batch ve @ params bağımsız değerlerini iki karakter değerleri karşılaştırarak eşleşir. Bunun anlamı, metin girmelisiniz tam olarak SQL Server Bu, gerçek toplu iş iş işleme alır.

Ne tür ' @ 'SQL' = ve @ module_or_batch NULL olarak küme, bu değeri, @ module_or_batch @ stmt değerine küme.Bunun için değer anlamı statement_text tam olarak aynı biçimde, sağlanan karakter-için-karakter için göndermiş gibi SQL Server. Iç dönüştürme, bu eşleşme sağlamak için yapılır.

Genellikle, s plan kılavuzu kullanarak sınamalısınız SQL Server Profiler Sorgunuz için eşleşen olmadığını doğrulamak için plan kılavuzu. Kılavuzları arasında toplu işlemleri çalıştırarak planlamak sınama SQL veya TEMPLATE tabanlı SQL Server Management Studio beklenmeyen sonuçlar verebilir. Daha fazla bilgi için bkz:Oluşturma ve sınama için SQL Server Profiler'ı kullanarak kılavuzları planlanır..

Not

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

Plan önbelleğinde plan kılavuzu efekt

Bu modül için sorgu planını bir modülde bir plan kılavuzu oluşturma plan önbelleğinden kaldırır.Nesne veya SQL türü bir plan kılavuzu üzerinde bir toplu iş oluşturma, aynı karma değere sahip bir toplu iş için sorgu planını kaldırır.Tür TEMPLATE bir plan kılavuzu oluşturma plan önbelleğinden o veritabanındaki tüm tek deyimli toplu işlemleri kaldırır.

Plan kılavuzu deyimleri

Bir planı kılavuz oluşturmak için

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

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

Bir plan kılavuzu doğrulamak için