Amit Bansal
CTO
eDominer Systems P Ltd |
Peopleware India
Who is Amit Bansal?
 CTO, eDominer Systems & Peopleware India
 Conducted more than 200 workshops on SQL Server &
 BI for t...
Agenda & Session takeaways
 Query Optimizer characteristics
 Using Query & Table Hints
 Plan Freezing concept
 Scenarios f...
Query Optimizer characteristics
 Cost based optimization
 Does the Query Optimizer always do a fine job?
    Does it alway...
Join, Query & Table Hints
   FAST N Hint                 Functionality
   RECOMPILE
                               Index H...
Plan Freezing concepts
 Forcing / Locking down a query plan
 Provides greater query performance stability &
 predictabilit...
Scenarios from the wild…
 A query started mis-behaving after SQL Server upgrade
 Query text cannot be modified to use hint...
What are Plan Guides?
 Plan Freezing concept is implemented with Plan Guides
 A DB object that associates a set of query h...
Types of Plan Guides
 Object Plan Guides
    matches queries that execute in the context of a SQL Server
    object (SP, U...
Object Plan Guides
 You are interested in a T-SQL statement appearing in
 the context of a SQL Server object
 SQL Server o...
Object Plan Guides
sp_create_plan_guide
@name = N'Guide1',
@stmt = N'SELECT *FROM Sales.SalesOrderHeader AS
h,
        Sal...
Implementing Object Plan Guides
Name
Title
Company
SQL Plan Guides
 You are interested in a particular T-SQL statement
    Stand-alone
    Or part of a batch
 T-SQL statemen...
SQL Plan Guides
sp_create_plan_guide
@name = N'Guide2',
@stmt = N'SELECT TOP 1 * FROM
Sales.SalesOrderHeader ORDER BY Orde...
Implementing SQL Plan Guides
Name
Title
Company
Template Plan Guides
 To override PARAMETERIZATION database setting
 Can only use the following hints:
      PARAMETERIZAT...
Template Plan Guides
EXEC sp_create_plan_guide
    @name = N'TemplateGuide1',
    @stmt = N'SELECT * FROM
AdventureWorks.S...
Implementing Template Plan Guides
Name
Title
Company
Applying a Fixed Query Plan to a Plan
Guide
  Useful when you know about an existing
  execution plan that performs better...
Applying a Fixed Query Plan to a Plan
Guide
Creating Plan Guides directly from
the plan cache
  Creates one or more plan guides from a query
  plan in the plan cache
...
Creating Plan Guides directly from the
plan cache
Managing & Validating Plan Guides
 Managing Plan Guides
     sp_control_plan_guide
       ENABLE, DISABLE, DROP
 Validatin...
Plan Guides considerations
 The statement text in the plan guide must exactly
 match the query text
 To verify that your p...
Summary
 There are many scenarios where you cannot use hints
 Plan Guides come to rescue
 Three different types (OBJECT, S...
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be...
Admin Guiding Query Plans
Admin Guiding Query Plans
Admin Guiding Query Plans
Upcoming SlideShare
Loading in …5
×

Admin Guiding Query Plans

813 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
813
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Admin Guiding Query Plans

  1. 1. Amit Bansal CTO eDominer Systems P Ltd | Peopleware India
  2. 2. Who is Amit Bansal? CTO, eDominer Systems & Peopleware India Conducted more than 200 workshops on SQL Server & BI for top notch IT companies world wide Microsoft MVP for SQL Server Microsoft Certified Trainer Advisory Council member Speaker at TechED India, TechED US & TechED Europe Technical Reviewer – MSL courses on SQL Server SME – SQL Server 2008 certifications UG Lead (Delhi NCR) – Culminis Manager – www.WeTogether.in, www.DelhiDevs.com, www.BlogBoard.in
  3. 3. Agenda & Session takeaways Query Optimizer characteristics Using Query & Table Hints Plan Freezing concept Scenarios from the wild What are Plan Guides & different types Implementing Plan Guides Managing & Validating Plan Guides Plan Guide considerations Summary
  4. 4. Query Optimizer characteristics Cost based optimization Does the Query Optimizer always do a fine job? Does it always select the best query plan? Use Hints to affect the query plan selection Use Hints as a last resort, Use with caution To be used only by experienced DBDs & DBAs Is there really a problem? Check if there are other issues Identify the real cause of a poor plan What if SQL Server fails to generate a valid plan? (error 8622 is raised)
  5. 5. Join, Query & Table Hints FAST N Hint Functionality RECOMPILE Index Hints OPTIMIZE FOR Hint OPTIMIZE FOR UNKNOWN Hint Join Hints JOIN Hints Parallelism FORCE ORDER Hint Locking INDEX Hint Compilation FORCESEEK Hint READPAST Hint Table Hints USE PLAN Hint ….
  6. 6. Plan Freezing concepts Forcing / Locking down a query plan Provides greater query performance stability & predictability Enables organizations to promote stable query plans Hardware Server replacements Server upgrades Production Deployments Plan Freezing can Optimize query performance Copy query plans between servers Prevent the plan cache from growing excessively with large compiled plans that are not reused
  7. 7. Scenarios from the wild… A query started mis-behaving after SQL Server upgrade Query text cannot be modified to use hints Eg: Application/vendor code, ISV, etc Query performance degraded after hardware upgrade You need to copy plans from one server to the other Overcoming ‘Parameter Sniffing’ issues After a service pack upgrade – “my query just starting running 4 times slower today and the plan is different from yesterday” ……sigh 
  8. 8. What are Plan Guides? Plan Freezing concept is implemented with Plan Guides A DB object that associates a set of query hints with the query Can be created using: sp_create_plan_guide sp_create_plan_guide_from_handle Fixed query plan (XML Showplan output) can be also be applied Available in Standard, Enterprise, Evaluation & Developer edition
  9. 9. Types of Plan Guides Object Plan Guides matches queries that execute in the context of a SQL Server object (SP, UDF, DML triggers etc) SQL Plan Guides matches queries that execute in the context of stand-alone Transact-SQL statements and batches ( not part of a database object) Template Plan Guides matches stand-alone queries that parameterize to a specified form To override the current PARAMETERIZATION setting
  10. 10. Object Plan Guides You are interested in a T-SQL statement appearing in the context of a SQL Server object SQL Server object can be: Stored Procedure User Defined Function (Scalar) Multi-statement table-valued user-defined functions DML Triggers
  11. 11. Object Plan Guides sp_create_plan_guide @name = N'Guide1', @stmt = N'SELECT *FROM Sales.SalesOrderHeader AS h, Sales.Customer AS c, Sales.SalesTerritory AS t WHERE h.CustomerID = c.CustomerID AND c.TerritoryID = t.TerritoryID AND CountryRegionCode = @Country_region', @type = N'OBJECT', @module_or_batch = N'Sales.GetSalesOrderByCountry', @params = NULL, @hints = N'OPTION (OPTIMIZE FOR (@Country_region = N''US''))'
  12. 12. Implementing Object Plan Guides Name Title Company
  13. 13. SQL Plan Guides You are interested in a particular T-SQL statement Stand-alone Or part of a batch T-SQL statements sent by CLR objects, extended SPs & Dynamic SQL (EXEC (sql_string)) are processed as batches The text has to be exactly the same: Case, whitespace, etc.
  14. 14. SQL Plan Guides sp_create_plan_guide @name = N'Guide2', @stmt = N'SELECT TOP 1 * FROM Sales.SalesOrderHeader ORDER BY OrderDate DESC', @type = N'SQL', @module_or_batch = NULL, @params = NULL, @hints = N'OPTION (MAXDOP 1)';
  15. 15. Implementing SQL Plan Guides Name Title Company
  16. 16. Template Plan Guides To override PARAMETERIZATION database setting Can only use the following hints: PARAMETERIZATION FORCED PARAMETERIZATION SIMPLE Little tricky SQL Server has to construct a template of the query in the same format that it will be in once it is parameterized Special stored procedure: sp_get_query_template @params is only used for TEMPLATE plan guide
  17. 17. Template Plan Guides EXEC sp_create_plan_guide @name = N'TemplateGuide1', @stmt = N'SELECT * FROM AdventureWorks.Sales.SalesOrderHeader AS h INNER JOIN AdventureWorks.Sales.SalesOrderDetail AS d ON h.SalesOrderID = d.SalesOrderID WHERE h.SalesOrderID = @0', @type = N'TEMPLATE', @module_or_batch = NULL, @params = N'@0 int', @hints = N'OPTION(PARAMETERIZATION FORCED)';
  18. 18. Implementing Template Plan Guides Name Title Company
  19. 19. Applying a Fixed Query Plan to a Plan Guide Useful when you know about an existing execution plan that performs better than the one selected by the optimizer for a particular query Can be applied to OBJECT or SQL plan guides Extract the XML Showplan from the cache and supply it to the sp_create_plan_guide
  20. 20. Applying a Fixed Query Plan to a Plan Guide
  21. 21. Creating Plan Guides directly from the plan cache Creates one or more plan guides from a query plan in the plan cache Can be applied to OBJECT or SQL plan guides Extract the plan handle from the cache and supply it to the sp_create_plan_guide_from_handle
  22. 22. Creating Plan Guides directly from the plan cache
  23. 23. Managing & Validating Plan Guides Managing Plan Guides sp_control_plan_guide ENABLE, DISABLE, DROP Validating Plan guides sys.fn_validate_plan_guide
  24. 24. Plan Guides considerations The statement text in the plan guide must exactly match the query text To verify that your plan guide was used, see for specific elements in XML Showplan output PlanGuideDB & PlanGuideName (or) TemplatePlanGuideDB & TemplatePlanGuideName Query Plan (properties window)
  25. 25. Summary There are many scenarios where you cannot use hints Plan Guides come to rescue Three different types (OBJECT, SQL, TEMPLATE) SQL Server 2008 enhancements Applying a fixed query to a plan guide using XML Showplan Creating a plan directly from a plan in the plan cache Validating Plan Guides Plan Guide Considerations
  26. 26. © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

×