SQLSaturday Paris 2015 Plans d’execution Optimisations.

Slides:



Advertisements
Similar presentations
SQL Server performance tuning basics
Advertisements

Aaron Bertrand SQL Sentry, Senior Kevin Kline SQL Sentry, Dir of Engineering
Aaron Bertrand SQL Sentry, Senior Kevin Kline SQL Sentry, Dir of Engineering
Sponsored by: Professional Association for SQL Server Bad plan! Sit! Gail Shaw.
Shu J Scott Program Manager for Query Processing SQL Server Relational Engine, Microsoft DAT318.
Module 9: Implementing Stored Procedures. Introduction to Stored Procedures Creating Executing Modifying Dropping Using Parameters in Stored Procedures.
Virtual techdays INDIA │ 9-11 February 2011 SQL 2008 Query Tuning Praveen Srivatsa │ Principal SME – StudyDesk91 │ Director, AsthraSoft Consulting │ Microsoft.
02 | Advanced SELECT Statements Brian Alderman | MCT, CEO / Founder of MicroTechPoint Tobias Ternstrom | Microsoft SQL Server Program Manager.
Copyright 2007– WinWare, Inc. Session: How to Utilize the Open Database Architecture of CribMaster Presenter: Phil Stenger.
SQL Basics. SQL SQL (Structured Query Language) is a special-purpose programming language designed from managing data in relational database management.
2 Avoiding Stored Procedure Recompiles Dr Greg Low Managing Director Solid Q Australia Session Code: DAT454.
Defining Stored Procedures Named Collections of Transact-SQL Statements Encapsulate Repetitive Tasks Five Types (System, Local, Temporary, Remote, and.
Maciej Pilecki Consultant, SQL Server MVP Project Botticelli Ltd. SESSION CODE: DAT403.
Module 7 Reading SQL Server® 2008 R2 Execution Plans.
Module 8: Implementing Stored Procedures. Introducing Stored Procedures Creating, Modifying, Dropping, and Executing Stored Procedures Using Parameters.
Module 9 Designing and Implementing Stored Procedures.
04 | Grouping and Aggregating Data Brian Alderman | MCT, CEO / Founder of MicroTechPoint Tobias Ternstrom | Microsoft SQL Server Program Manager.
Database Unit Test MSSQL 2008 & VS 2010 Aung Kyaw Myo.
Dive into the Query Optimizer Dive into the Query Optimizer: Undocumented Insight Benjamin Nevarez Blog: benjaminnevarez.com
Module 18 Querying XML Data in SQL Server® 2008 R2.
Creating a dynamic search form with database paging Tony Rogerson SQL Server MVP Torver Computer Consultants.
SQL Server User Defined Functions. CREATE FUNCTION [ schema_name. ] function_name ( [ [ AS ][ type_schema_name. ] parameter_data_type.
How to Use Parameters Like a Pro …and Boost Performance Guy Glantser, CEO, Madeira.
DAT410 SQL Server 2005 Optimizing Procedural Code Kimberly L. Tripp President/Founder, SQLskills.com.
Parametre og variable i T-SQL 1.Parametre (input) 2.Parametre (output) 3.Variable.
Gail Shaw XpertEase DAT 305 Topics Background Information Query Hints Plan Cache Metadata Plan Guides Plan Freezing Monitoring Plan Guide Use.
Meta Data Cardinality Explored CSSQLUG User Group - June 2009.
Ch 3. Working with Tables and Views. Data type Specify type of data to be entered into a column (text, number, datetime, etc) Unicode (National) Datatypes.
Module 9: Using Advanced Techniques. Considerations for Querying Data Working with Data Types Cursors and Set-Based Queries Dynamic SQL Maintaining Query.
Module 2: Querying and Filtering Data. Using the SELECT Statement Filtering Data Working with NULL Values Formatting Result Sets Performance Considerations.
Module 8: Using Programming Objects for Data Retrieval.
SQL SERVER.   Optionally, some other XML 
Week 5 – Nov 4, 2015 Data Analysis. Class today Last week & Homework review SQL: Purpose and functions Data Cleaning Pivot Tables, Power Pivots and Power.
SQLSaturday Paris 2015 Power BI & Datazen Nouveautés et Dataviz.
Execution Plans Detail From Zero to Hero İsmail Adar.
Module 3: Grouping and Summarizing Data. Summarizing Data by Using Aggregate Functions Summarizing Grouped Data Ranking Grouped Data Creating Crosstab.
SQLSaturday Paris 2015 Power BI for Developers Rui Romano.
Dynamic SQL Writing Efficient Queries on the Fly ED POLLACK AUTOTASK CORPORATION DATABASE OPTIMIZATION ENGINEER.
SQL Server Performance Tuning
Parameter Sniffing in SQL Server Stored Procedures
Query Optimization Techniques
Dynamic SQL Writing Efficient Queries on the Fly
Stored Procedures – Facts and Myths
02 | Advanced SELECT Statements
10 | Programming with Transact-SQL
Parameter Sniffing in SQL Server Stored Procedures
STORED PROCEDURES AND FUNCTION (9.6.1)
Dynamic SQL Writing Efficient Queries on the Fly
මොඩියුල විශ්ලේෂණය Buffer Pool Extension භාවිතය.
Module 5: Implementing Data Integrity by Using Constraints
Introduction to Execution Plans
Query Execution Expectation-Reality Denis Reznik
Query Optimization Techniques
Statistics: What are they and How do I use them
In the name of the resources
Transact SQL Performance Tips
Ascending Key Problem in SQL Server Large Tables
SQL Server Stored Procedures.
How to Use Parameters Like a Pro
In-Memory OLTP for Database Developers
Introduction to Execution Plans
Parameter Sniffing on SQL Server
Query Tuning Fundamentals
“Magic numbers”, local variable and performance
මොඩියුල විශ්ලේෂණය Stored Procedure හඳුන්වා දීම.
SQL Server Query Design and Optimization Recommendations
Introduction to Execution Plans
Query Optimization Techniques
Why Should I Care About … Partitioned Views?
Introduction to Execution Plans
Presentation transcript:

SQLSaturday Paris 2015 Plans d’execution Optimisations

SQLSaturday Paris 2015 Speakers David BARBARIN  Société :  Expérience MSSQL : ~ depuis 2002, SQL Server 7 à 2016  Site / Blog :  Mail : Sarah BESSARD  Société :  Expérience MSSQL : ~ depuis 2006, SQL Server 7 à 2014  Site / Blog :  Mail :

SQLSaturday Paris 2015 Merci à nos sponsors…

SQLSaturday Paris 2015 Merci à nos volontaires…

SQLSaturday Paris 2015 Agenda  Optimisateur de requêtes  Mécanisme de cache  Patterns d’optimisation  La face cachée de l’optimiseur

SQLSaturday Paris 2015 Optimiseur de requête - architecture Simplification Trivial plan Statistics loading Exploration (phases) Convert to executable plan

SQLSaturday Paris 2015 Optimiseur de requête – Sortie Parsing/Binding : Arbre logique SELECT c.StoreID, COUNT(*) AS CountOrders FROM Sales.Customer c INNER JOIN Sales.SalesOrderHeader h ON c.CustomerID = h.CustomerID WHEREh.OrderDate > ' ' GROUP BY c.StoreID

SQLSaturday Paris 2015 Optimiseur de requête – Phase de simplification Simplification Trivial plan Statistics loading Exploration (phases) Convert to executable plan Constant folding Domain simplification Predicate push-down Join simplification Contradictions

SQLSaturday Paris 2015 Optimiseur de requête – Plusieurs plans possible ou Trivial ? Simplification Trivial plan Statistics loading Exploration (phases) Convert to executable plan

SQLSaturday Paris 2015 Optimiseur de requête – Statistics loading Simplification Trivial plan Statistics loading Exploration (phases) Convert to executable plan

SQLSaturday Paris 2015 Optimiseur de requête – Processus de recompilation et statistiques Cache lookup Query optimization Load all of interesting statistics Are stats stale? Refresh all of the stats that need refreshing Generates the query plan Set recompilation thresholds of all the tables referenced in the query Check the query plan for correctness related reasons (schema checks) Schema valid? Do we have newer stats available? Any stats stale? Begin query execution Failure Yes No Yes

SQLSaturday Paris 2015 Mécanisme de cache – Introduction Begin query execution Simplification Trivial plan Statistics loading Exploration (phases) Convert to executable plan By pass Next query Reuse execution plan in cache Compilation

SQLSaturday Paris 2015 Cache et objets compilés  Objtype = ‘Proc’  Procédures stockées, triggers, UDFs et TVFs  Requêtes préparées  Contrôle total des paramètres d’entrées (domaine et type)  Recompilation des plans d’exécutions  WITH RECOMPILE vs OPTION (RECOMPILE)  “parameter sniffing”

SQLSaturday Paris 2015 Patterns d’optimisation  Kitchen Sink  Search ARGumentable  #Temp  Filtre résiduel

SQLSaturday Paris 2015 Patterns d’optimisation : Kitchen Sink INT = NULL DATETIME = ' ' DATETIME = NULL MONEY = 1000 SELECT SalesOrderID FROMSales.SalesOrderHeader WHERE IS NULL OR CustomerId AND IS NULL OR OrderDate AND IS NULL OR OrderDate AND IS NULL OR TotalDue

SQLSaturday Paris 2015 Patterns d’optimisation : Kitchen Sink (variante) INT = NULL DATETIME = ' ' DATETIME = NULL MONEY = 1000 SELECT SalesOrderID FROMSales.SalesOrderHeader WHERE CustomerId = CustomerId) AND OrderDate >= OrderDate) AND OrderDate <= OrderDate) AND TotalDue >= TotalDue )

SQLSaturday Paris 2015 Patterns d’optimisation : Kitchen Sink VS sp_executesql INT = NULL DATETIME = ' ' DATETIME = NULL MONEY = 1000 AS NVARCHAR(1500) AS NVARCHAR(100) = MONEY' = ' SELECT SaleOrderId ' += ' FROMSales.SalesOrderHeader ' += ' WHERE 1 = 1 ' IS NOT NULL += ' AND CustomerId IS NOT NULL IS NOT NULL += ' AND OrderDate IS NOT NULL += ' AND TotalDue

SQLSaturday Paris 2015 Patterns d’optimisation : Condition sargable (Search ARGumentable) Condition non sargableCondition sargable SELECT * FROM Person.Person WHERE LastName LIKE '%Ledyard' SELECT * FROM Person.Person WHERE LastName LIKE 'Ledyard%' SELECT * FROM Sales.SalesOrderHeader WHERE CONVERT(CHAR(10), OrderDate, 103) = 103) SELECT * FROM Sales.SalesOrderHeader WHERE OrderDate >= AS DATE) AND OrderDate < CAST(DATEADD(DAY, AS DATE) SELECT * FROM Person.Person WHERE UPPER(LastName) -- Use COLLATION French_CI_AI on column « LastName » SELECT * FROM Person.Person WHERE LastName

SQLSaturday Paris 2015 Patterns d’optimisation : #Temp StockageTempdb Nombre de lignes max.Non< 1000 lignes StatistiquesOuiSQL Server 2014 : Oui Traceflag 2453 Index/KeyOui1 PK / 1 UK SQL Server 2014 : Oui TruncateOuiNon RecompilationOuiNon ParallélismeOuiNon TransactionOuiNon ScopeGlobal (##), 1 session (#)1 session

SQLSaturday Paris 2015 Patterns d’optimisation : Filtre résiduel SELECT p1.ListPrice FROMProduction.Product p1 INNER JOIN Production.Product p2 ON p1.ProductSubcategoryID = p2.ProductSubcategoryID AND p1.ListPrice - p2.ListPrice = 0

SQLSaturday Paris 2015 La face cachée de l’optimiseur

SQLSaturday Paris 2015 Questions

SQLSaturday Paris 2015 …Et en plus on peut gagner des cadeaux