Geçirme sorgu planları
Çoğu durumda, bir veritabanına yükseltme SQL Server 2008 Gelişmiş bir sorgu performansı neden olur. Ancak, kritik dikkatle performans için ayarlanan sorgu varsa, her sorgu için bir plan kılavuzu oluşturarak yükseltmeden önce bu sorgu için sorgu planları korumak isteyebilirsiniz.Yükselttikten sonra sorgu iyileştiricisi verimli bir plan aşağıdakilerden birini veya birkaçını sorguları için seçerse, planı Kılavuzları'nı etkinleştirmek ve yükseltme planları kullanmak için sorgu iyileştiricisi zorla.
Plan oluşturmak için Kılavuzlar, yükseltmeden önce aşağıdaki adımları izleyin:
Geçerli planın her görev kritik bir sorgu kullanarak kayıt sp_create_plan_guide yordam ve sorgu planını USE PLAN sorgu ipucu belirtme depolanır.
Plan kılavuzu sorguya geçerli olduğunu doğrulayın.
Veritabanına yükseltme SQL Server 2008.
Planlarını planı kılavuzları yükseltilen veritabanında korunur ve yükseltmeden sonra bir geri plan eksiklikleri durumunda, görevi.
Fırsat için yeni bir sürümdeki daha iyi bir plan kaçırabilirsiniz nedeniyle yükseltme veya yararlı nedeniyle güncelleştirilmiş istatistikleri yeniden derler sonra planı kılavuzları etkinleştirmenizi değil öneririz.
Verimli planları, yükseltmeden sonra seçilir, tüm etkinleştirmek veya yeni planları geçersiz kılmak için alt küme küme küme kümesini planı size yol gösterir.
Örnek
Aşağıdaki örnek, sorgu için bir yükseltme planı plan kılavuzu oluşturarak kayıt gösterilmiştir.
1. Adım: Plan toplama
Içindeki sorgu planı kayıtlı plan kılavuzu XML biçiminde olması gerekir.XML olarak biçimlendirilmiş bir sorgu planları aşağıdaki yollardan ile üretilebilecek:
Query_plan sütun sorgulama sys.dm_exec_query_plan Dinamik yönetim işlev.
The SQL Server ProfilerShowplan XML, Showplan XML Statistics Profile, and Showplan XML For Query Compile event classes.
Üretir ve sorgu planları çözümleme hakkında daha fazla bilgi için bkz: Bir sorgu çözümleniyor.
Aşağıdaki örnekte, deyim için Sorgu planını toplar SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC; dinamik yönetimi görünümleri sorgulayarak.
USE AdventureWorks;
GO
SELECT query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, DEFAULT, DEFAULT) AS qp
WHERE st.text LIKE N'SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC;%';
GO
2. Adım: Plan zorlamak için plan kılavuzu oluşturma
(Daha önce açıklanan yöntemlerden biriyle elde) XML olarak biçimlendirilmiş bir sorgu planını kullanılarak plan kılavuzu, kopyalayıp sorgu planı olarak bir dize içinde sp_create_plan_guide OPTION yan tümcesinde belirtilen USE PLAN sorgu ipucu.
Plan kılavuzu oluşturmadan önce ikinci bir tırnak işareti planla görünen tırnak ('), XML planı içinde kendisi, çıkış.Örneğin, içeren bir planı WHERE A.varchar = 'This is a string' koda değiştirerek girilmelidir WHERE A.varchar = ''This is a string''.
Aşağıdaki örnek oluşturur bir plan kılavuzu sorgu planı 1. adımda toplanan ve sorguda için XML gösterim planı ekler @hints Parametre. Yalnızca kısmi gösterim planı çıktı, kısaltma için örnekte eklenmiştir.
EXECUTE sp_create_plan_guide
@name = N'Guide1',
@stmt = N'SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION(USE PLAN N''<ShowPlanXML xmlns=''''https://schemas.microsoft.com/sqlserver/2004/07/showplan''''
Version=''''0.5'''' Build=''''9.00.1116''''>
<BatchSequence><Batch><Statements><StmtSimple>
…
</StmtSimple></Statements></Batch>
</BatchSequence></ShowPlanXML>'')';
GO
3. Adım: Plan kılavuzu uygulandı that için Query doğrulayın.
Sorguyu yeniden çalıştırın ve üretilen bir sorgu planını inceleyin.Planı bir plan kılavuzda belirtilen eşleşen görmelisiniz.
See Also