#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.

Slides:



Advertisements
Présentations similaires
L’optimiseur ORACLE L’optimiseur ORACLE suit une approche classique: Génération de plusieurs plans d’exécution. Estimation du coût de chaque plan généré.
Advertisements

Optimisation des requêtes
Corrélation Position du problème Définition covariance (X,Y) r =
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Règles d’association.
19 septembre 2006 Tendances Logicielles IBM Rational Data Architect Un outil complet de modélisation et de conception pour SGBD Isabelle Claverie-Berge.
SQL - Subtilités.
Optimisation algébrique de requêtes relationnelles
Les démarches de développement
Optimisation de Requêtes
Recherche heuristique de similitudes dans les séquences dADN École Jeunes Chercheurs en Algorithmique et Calcul Formel Laurent Noé
Application à la méthode des
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
LMD: Langage de Manipulation de Données
To Tune or not to Tune? To Tune or not to Tune? A Lightweight Physical Design Alerter Costa Jean-Denis Le Yaouanc Aurélie Mécanismes de SGBD 2007.
#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.
L’utilisation des bases de données
Les Webcasts Groupe des Utilisateurs SQL Server Avril 2014 – Statistiques Incrémentales Fred Pichaut – Microsoft Senior.
Chap 4 Les bases de données et le modèle relationnel
1 Bases de Données Distribuées Chapitre 22, Sections 22.6–22.14.
#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.
LE REFERENCEMENT NATUREL S.E.O. (Search Engine Optimisation)
L’utilisation des bases de données
Modeles Lineaires.
La corrélation et la régression multiple
1 Évaluation des Requêtes: Survol Chapitre Objectifs Catalogue Préliminaires: Techniques de base pour traiter des requêtes Chemin daccès Correspondance.
La corrélation et la régression
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Évaluation des Requêtes: Survol Chapitre 12.
Cours de Base de Données & Langage SQL
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France.
OPTIMISATION DE BASE DE DONNEES ORACLE
Régression linéaire multiple : hypothèses & interprétation. Partie 2.
Régression linéaire multiple : hypothèses & interprétation
Fichiers de données Fichiers de contrôles Fichiers de journalisations Fichiers de paramètres d’initialisation.
Algèbre Relationnelle : Implémentation
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Module 8 : Surveillance des performances de SQL Server
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
ANALYSE DE DONNEES TESTS D’ASSOCIATION
#JSS2014 Les journées SQL Server 2014 Un événement organisé par GUSS.
Optimisation de requêtes
Les utilisateurs potentiels : Les administrateurs de bases de données, Les développeurs, Le support et les opérations, Les architectes, Les analystes.
1 G. Gardarin Optimisation de Requêtes  1. Introduction  2. Arbres relationnels  3. Restructuration algébrique  4. Modèle de coût  5. Choix du meilleur.
Module 7 : Utilisation de requêtes élaborées
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Sélection de colonnes (la projection)
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
22/04/2015© Robert Godin. Tous droits réservés.1 10 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
AdCore University Présente: Enchères, Règles et Alertes.
Miguel Garzon CrUise Lab - SITE CSI PROJET 2013 Symmetric Hash Join.
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Les bases de données Séance 8 Jointures.
Séance /10/2004 SGBD - Approches & Principes.
Gestion des documents internes avec SQL Server 2005 Date de publication : janvier 2006.
Subversion.
Complément sous-requêtes
#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.
Analyse, élaboration et exploitation d’une Base de Données
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
De Arnault Chazareix :
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
SQLSaturday Paris 2015 SSDT-DB pour les sceptiques! Cédric L. Charlier.
Transcription de la présentation:

#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS

#JSS2013 Merci à nos sponsors

#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS New Cardinality Estimation Incremental Statistics SQL Server 2014 Fred Pichaut

#JSS2013 NEW CARDINALITY ESTIMATION

#JSS2013 Lexécution des requêtes et un composent de plus en plus critique Un degré de complexité de plus en plus grand avec laugmentation du volume des données Loptimisation des requêtes doit déterminer le chemin le plus efficace avec des workloads très différents Avoir une performance prédictible est très dure! Lexécution des requêtes

#JSS2013 Un plan est mesuré en terme de cout (« cost ») Tous va dépendre des estimations de cardinalité (« Cardinality Estimation » ou CE) Loptimisation des requêtes est par nature imprévisibles et très sensible aux estimation des cardinalité Les cout dun plan est principalement impacté par le nombre denregistrement traité par chaque étapes ou operateurs du plan Loptimisation est critique avec les workloads actuels Les bases du Query Optimization

#JSS2013 SQL Server Cardinality Estimation est un chalange – Les problèmes des clients sont difficiles a supporter Fixer ces problèmes est complexe pour lengineering – Il ny a pas de moyen simple pour fixe les bugs ou de nettoyer le code Cette partie du code doit être réécrite et retesté – Des changements importants dans le design – Une nouvelle stratégie de testes Des changements de design complexe – Le model mathématique des estimations – Le design du code Les Challenges du Développement

#JSS2013 Améliorer la fiabilité de lestimation des cardinalités pour un large éventail de requêtes et workloads, OLTP, DW et DS – Améliorer les performances moyennes – Avoir des performances plus lisses et plus prédictibles Avoir deux version du CE – Eviter les régressions – Pouvoir utiliser lancien CE en cas de régressions Les Objectifs

#JSS2013 Améliorer les éléments du CE associé avec les operateur logique « non-leaf » – Inner, outer, semi, et anti-semi jointures – Group By, Distinct, Union Améliorer la fiabilité ua respect du model – Uniformité, Indépendance, confinement Faciliter les diagnostiques des problèmes de cardinalité Améliorer la maintenabilité du code de base – Pas de régression lors dun fixe Scope

#JSS2013 Rester raisonnable quand à la faisabilité Pas dinvestissement certain problèmes connus sur les « leaf-level » – Pas de multi-column histogrames – Table-valued fonctions – Variables de type table – Table-valued parameters – Variables locales Pas encore dans le scope

#JSS2013 De Database Systems Lab, Indian Institute of Science Un outils de visualisation graphique Visualiser et analyser le comportement des optimiseurs Operationel pour plusieurs moteurs – Microsoft SQL Server – IBM DB2 – Oracle – Sybase – PostgreSQL Picasso Database Optimizer Visualizer

#JSS2013 Estimation du cout pour requêtes à 2 variables SQL Server 2008 R2 Prototype with new CE Le cout ne doit pas diminuer alors que le nombre denregistrements retourné augmente

#JSS2013 Diagramme Picasso la même requête Moins de plans générés avec le nouveau Cardinality Estimator SQL Server 2008 R2Prototype with new CE

#JSS2013 Hypothèse duniformité: Dans chaque palier dhistogramme les valeurs distinctes sont équidistantes et ont la même fréquence. Le Nouveau Model Mathématique (1)

#JSS2013 Hypothèse de confinement: Les requêtes concernent des données qui existent. Pour un prédicat Column-Equal-Constant, nous supposons que la constante existe dans le colonne. Pour une requête equijoin sur deux tables, nous supposons que sur la colonne de jointure les valeurs dun coté de la jointure existent de lautre coté. Le Nouveau Model Mathématique (2)

#JSS2013 Hypothèse dindépendance: Les données de différentes colonnes sont distribuées de façon indépendantes Pour la sélectivité (Sel) Suivant deux prédicats P, Q qui nimpliquent pas les même colonnes Sel(P ^ Q) = Sel(P) * Sel(Q) Pour le nombre de valeurs distinctes (NDV) Suivant deux colonnes c1, c2 NDV(c1, c2) = NDV(c1) * NDV(c2) Sauf si une stats multi-colonnes indique une autre valeur Le Nouveau Model Mathématique (3)

#JSS2013 Prédicat column-equal-constant Select * from T where T.c1 = 50 La valeur 50 existe dans lhistogramme (confinement) – La fréquence de 50 est la fréquence moyenne du palier dans lhistogramme (uniformité) Prédicat de type Range (interval) Select * from T where T.c1 > 35 and T.c1 < 50 – Interpolation linéaire pour estimer le # de lignes et # Valeurs distinctes dans linterval (35, 50) (uniformité) Exemples

#JSS2013 Exemples

#JSS2013 Essai de différentes variations du model Testé sur les benchmarks et workloads client – DW benchmarks – OLTP benchmarks – Des douzaines de workloads clients Choix des variations qui ont démontrées, en moyenne, les meilleurs performances Quest-ce qui a été fait?

#JSS2013 Quest-ce qui à changé: Exponential back-off vs. Independence

#JSS2013 Estimation de jointure – Ancien CE Equijoin avec un prédicat simple select * from T1 join T2 on T1.c1 = T2.c2 – Alignement des paliers des histogrammes avant de les combiner – Cest une cause dinconsistance dans lancien CE Le logique derrière est trop compliqué à expliquer Simplification de lalgorithme de jointure

#JSS2013 Estimation de jointure – Nouveau CE Equijoin avec un prédicat simple select * from T1 join T2 on T1.c1 = T2.c2 Alignement des histogrammes par les valeurs Min/Max Equijoin avec un prédicat multiple select * from T1 join T2 on T1.c1=T2.c2 and T1.d1=T2.d2 On prend le plus petit des nombres de valeurs distinctes entre les deux prédicats et on le multiplie par leur fréquence moyenne Non-equijoin select * from T1 join T2 on T1.c1 < T2.c2 On prend la cardinalité du coté le plus grand des prédicats. Simplification de lalgorithme de jointure

#JSS2013 Ancien CE: Loptimiseur prend les paliers dans les histogrammes en les associe un par un. Nouveau CE: Loptimiseur utilise une méthode plus grossière. Loptimiseur regroupe en premier les histogrammes en une palier unique et ensuite les associe. Deux Trace Flags disponibles – 9481: Force lancien CE – 2312: Force le nouveau CE (par default) select * from FactResellerSales fs join FactCurrencyRate fc on fs.CurrencyKey = fc.CurrencyKey Exemple: Jointure simple sur deux colonnes

#JSS2013 Quest ce que le problème de clé ascendante? – Les données sont ascendantes – Les nouvelles donnés ne sont pas dans lhistogramme Comment le nouveau CE le solutionne? – Toujours supposer que les valeurs demandées existe – Estime la cardinalité en utilisant la fréquence moyenne – Les même supposition sont prisent pour les « missing values » dans des statistiques échantillonnées Problème de clé ascendante

#JSS2013 Division de Cardinality Estimation en deux étapes Étapes 1: Planning Trouver un « cardinality calculator » pour les paramètres Étapes 2: Exécution Execition des « calculator » Bénéfices – Meilleur supportabilité – Maintenance et extension plus facile à intégrer Architecture

#JSS2013 Le futur Adresser les problèmes de « leaf- level » – Multi-column stats pour les prédicats corrélés – Table-valued functions – Table variables – Table-valued parameters – Local variables

#JSS2013 INCREMENTAL STATISTICS

#JSS2013 Les Statistiques dans SQL Server Utilisées par l'optimiseur pour évaluer la sélectivité des expressions, et donc la taille des résultats intermédiaires et finaux Elles peuvent être: – Crées automatiquement ou manuellement – Mises à jour automatiquement ou manuellement – Mises à jour en synchrone ou en asynchrone – Basées sur un échantillonnage de valeurs ou toutes les valeurs Le plus elles sont à jour, le meilleur cest. Mises à jour automatiquement est déclenchée quand au moins 20% des données de la table ont évoluées

#JSS2013 Pour une tables avec des millions de lignes, il peut prendre des jours voir des mois avant datteindre le seuil de 20% Si une nouvelle partition est ajoutée à la table et que ça ne modifie pas 20% de celle-ci, les statistiques ne sont pas mise à jour et il ny a pas dinformation sur cette nouvelle partition. Une mise à jour manuelle des statistiques peut être déclenché mais elle va échantillonner toute la table ce qui peut être trop long. Problème client

#JSS2013 Objectif: – Mise à jour plus rapide sur des tables avec de large partition – Des mises à jour automatiques plus fréquentes La cible est les tables partitionnées Une page de statistique par partition Merge binaire des statistiques de chaque partition pour créer une statistique globale Lensemble des pages sont persistante sur disque. La mise à jour peut être globale ou indépendante par partitions – ( % de la taille moyenne des partitions) pour la mise à jour de la stat globale – 20% de modification dans une partition -> Auto Stat Les Statistiques Incrémentales

#JSS2013 Sur une table avec 4 partitions Exemples Ajout dune 5 eme partition

#JSS2013 Create index with incremental statistics CREATE INDEX idx ON tbl (x, y) with STATISTICS_INCREMENTAL=ON Create incremental statistics CREATE STATISTICS stat ON tbl (x, y) with INCREMENTAL=ON Update statistics on a subset of partitions UPDATE STATISTICS tbl (stat) with RESAMPLE ON PARTITIONS (1,3,5) Enable/Disable incremental for an existing statistics UPDATE STATISTICS tbl (stat) with INCREMENTAL= ON Enable auto created statistics to be incremental ALTER DATABASE db SET INCREMENTAL ON Management

#JSS2013 demo

#JSS2013 Vous pouvez respirer, cest fini… Des questions?

#JSS2013