Udostępnij przez


Migrowanie planów kwerend

W większości przypadków uaktualnienie bazy danych do SQL Server 2008 spowoduje udoskonalone kwerendy wydajności.Jednak jeśli masz krytyczne kwerend, które zostały starannie dostrojone wydajności może chcesz zachować planów kwerend dla tych kwerend przed uaktualnieniem tworząc przewodnik planu dla każdej kwerendy.Jeśli po uaktualnieniu, optymalizator kwerendy wybiera mniej wydajne plan dla jednego lub więcej kwerend, można włączyć plan guides i wymuszenia optymalizator kwerendy, aby użyć listy planów.

Aby utworzyć plan prowadnice przed uaktualnieniem, wykonaj następujące kroki:

  1. Zarejestrować przy użyciu bieżącego planu dla każdej misji kwerendy krytycznych sp_create_plan_guide procedura składowana i określając planu kwerend w kwerendy wskazówkę dotyczącą stosowania planu.

  2. Zweryfikuj, że przewodnik planu jest stosowana do kwerendy.

  3. Uaktualnienie bazy danych do SQL Server 2008.

    Plany są zachowywane w bazie uaktualniony w plan guides i służą jako rezerwa w przypadek z strat zauważyć planu po uaktualnieniu.

    Zaleca się, aby nie włączenie przewodników planu po odsetek lub uaktualniania, ponieważ mogą pozostać niewykryte możliwości lepszego planów w nowej wersji rekompiluje ze względu na zaktualizowaną statystykę.

  4. Jeśli wybrano mniej wydajne plany po uaktualnieniu, aktywować wszystkie lub podzbiór planu prowadzi do zastąpienia nowe plany.

Przykład

Poniższy przykład pokazuje jak rejestrować uaktualnienia wstępnego przewodnik planu kwerendy przez utworzenie przewodnik planu.

Krok 1: Zebrać planu

Plan kwerend są rejestrowane w przewodnik planu musi być w formacie XML.Planów kwerend w formacie XML może być produkowany przy użyciu następujących sposobów:

Aby uzyskać więcej informacji dotyczących produkcji i analizowanie planów kwerend, zobacz Analizowanie kwerendy.

Poniższy przykład pobiera plan kwerend dla instrukcja SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC; przez badanie dynamiczne zarządzanie widokami.

USE AdventureWorks2008R2;
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

Krok 2: Utworzyć plan, aby wymusić planu

Za pomocą przewodnik planu kwerend w formacie XML (uzyskany przez którąkolwiek z metod opisanych wcześniej) w podręczniku plan skopiować i wkleić przewodnik planu kwerend jako ciąg literału wewnątrz kwerendy wskazówkę dotyczącą przewodnik planu wykorzystania określonych w klauzula opcji sp_create_plan_guide.

W ramach przewodnik planu XML escape cudzysłów ('), które pojawiają się w plan z drugiego znaku cudzysłowu przed utworzeniem przewodnik planu.Na przykład planu, który zawiera WHERE A.varchar = 'This is a string' muszą mieć zmienione znaczenie za przez zmodyfikowanie kodu do WHERE A.varchar = ''This is a string''.

Poniższy przykład tworzy przewodnik planu do przewodnik planu kwerend zebrane w kroku 1 i wstawia Showplan XML kwerendy w @hints parametru.Dla skrócenia tylko częściowe wyjściowego Showplan znajduje się w przykładzie.

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

Krok 3: Zweryfikuj, że planu jest stosowana do kwerendy

Uruchom ponownie kwerendę i zbadać planu kwerend, który jest produkowany.Powinien pojawić się plan odpowiada jednej określonej w przewodnik planu.