Optimisation SQL Server

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

Structures de données avancées : Principales structures de fichiers
Cours de C – Séance dexercices 12 Octobre Exercice 5 Idem quexercice 1 : lire une ligne au clavier Sans limitation de la longueur de la ligne (utilisez.
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 3 : Le serveur Patrick Guimonet Architecte Infrastructure Division.
Évaluation des requêtes relationnelles
Fonctionnalités des SGBD
PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
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,
Base de données: Généralité
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Contrôles d'accès aux données
Les instructions PHP pour l'accès à une base de données MySql
Les fichiers indexés (Les B-arbres)
Moteur de recherche d’information
Moteur de recherche d’information
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Indexes à Arbres et Indexes à Hachage
Algèbre Relationnelle
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
1 Survol du Stockage et de lIndexage Chapitre 8. 2 Objectifs Stockage persistant Organisation des fichiers Fichiers de données Fichiers dindexes Operations.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Survol du Stockage et de lIndexage Chapitre 8.
Indexes à Arbres et Indexes à Hachage
MySQL Création des sites dynamiques
Base de données: Généralités IFT6800 – E 2008 Pierre Poulin.
Création de bases de données
Les concepts et les méthodes des bases de données
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Survol du Stockage et de lIndexage Chapitre 8.
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
La masse volumique et la masse d’une substance dans un volume donné
Vue d'ensemble Surveillance des journaux d'événements
Programmation Internet en PHP SIL module M12
Module 8 : Surveillance des performances de SQL Server
Bases de données   J-L Hainaut III. Méthodologie des bases de données [long] 1. Méthodologie des BD5. Conception physique 2. Le modèle Entité-association6.
Premières analyses / impressions sur les sytèmes base de données NoSQL
Bases de données fédéréEs hétérogènes
Combien envisagent d’utiliser SSMA pour migrer : OracleSybaseAccess.
Yonel Grusson 1 SQL SERVER 2000 CLIENT/SERVEUR. Yonel Grusson 2 PLAN Présentation Installation Résultat de l'installation L'administration –Par le SQL.
Optimisation de requêtes
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Structures de données avancées : MBT ( Multidimensional B-trees )
Module 4 : Implémentation de l'intégrité des données.
Structures de données avancées : Concepts du Multidimensionnel D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
XML fortement adopté en tant que format indépendant d’échange de données. Utilisation de XML pour la modélisation de données structurées et non structurées.
Le Langage SQL Introduction. 2 Historique du Langage SQL E. F. CODD : premiers articles dans les années 70 IBM crée le langage SEQUEL (Structured English.
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.
Création et Gestion de Tables
Module 1 : Vue d'ensemble de Microsoft SQL Server
1 Survol du Stockage et de l’Indexage Chapitre 8.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Structures de données avancées : Variantes des B arbres
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
Structures de données avancées : Principales structures de fichiers
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Les bases de données Séance 8 Jointures.
Modèles des Data Warehouses
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Matière Sélectionnée: Triage Externe, Join à Hachage, … Chapitres 13—15: 13.1—13.5, 14.4,
Module 3 : Gestion des fichiers de base de données
Gestion des documents internes avec SQL Server 2005 Date de publication : janvier 2006.
#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.
Traitement et optimisation de requêtes
Analyse, élaboration et exploitation d’une Base de Données
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
FACTORY systemes Module 6 Page 6-1 La base de données InSQL FORMATION InSQL 7.0.
Transcription de la présentation:

Optimisation SQL Server Alexis Comte

Plan Organisation physique Query optimizer Statistiques Procédures stoquées Indexed Views Covering index Index Intersection

Organisation physique Objets organisés en pages de 8k. Header de 96 octets contenant le type de page (donnée, index, log, ) taille libre dans la page id de l’objet propriétaire de la page pointers vers la page précédente et la page suivante de l’objet La taille d’une ligne ne peut donc pas dépasser 8k Une page ne contient que des données d’un objet Un extend est composé de 8 pages. Extend mixte contient des pages de plusieurs objets Extend uniforme : seulement un objet tous les objets dont la taille dépasse 8 pages sont placés dans des extends uniformes

Schéma d’une page

Query optimiser Détermination du meilleur plan d’exécution Type d’index : Clustered (Index non dense, arbre B) Clés primaires Colonnes n’ayant pas beaucoup de mises à jour Requêtes retournant une large plage de valeurs ( > , <, between) Colonnes utilisés dans des opérations « Order by » ou « Group by » Non Clustered (Index dense, arbre B) Colonnes ayant un grande sélectivité. Requêtes ramenant un très faible nombre de données. Algorithme de jointures Nested loop join (boucles imbriquées) Merge join (tri fusion) Hash join (Hachage )

Clustered index

Non clustered index

STATISTIQUES Calcule le degré de Sélectivité d’une colonne. Création Automatiquement lors de la création d’un index ou pour toute colonne dans une clause where (AUTO_CREATE_STATISTICS) Manuellement. Mises à jour Automatiquement en fonction du volume de données mise à jour (AUTO_UPDATE_STATISTICS) Méthode de calcul Echantillonnage sur des pages (de la table ou de l’index) prises au hasard FULLSCAN pour les tables dont la taille < 8 MB Choix manuel La création manuelle de statistiques sur plusieurs colonnes peut aider le Query Analyser à choisir le meilleur plan. Exemple : WHERE a = 7 and b = 9 Une stat sur (a,b) permet de connaître le nombre de couples (a,b) distincts

Procédures stockées Réduction du traffic réseau Permet de placer plusieurs requêtes dans une même procédure Meilleures performances Sauvegarde compilée : plus besoin de recalculer le plan d’exécution Mise en mémoire après la première exécution. Exemple Création Create procedure GetTop5 as select top 5 productid, sum(unitprice*quantity*discount) as rebate from order_details group by productid order by rebate desc Exécution GetTop5

Indexed views Vues pouvant utiliser des index (clustered ou secondaires). Stockage physique des résultats de la requête Mises à jour dès que les données sous jacentes sont mise à jour. Particulièrement intéressantes sur les opérations d’agrégation (sum, count,avg,…) Résultats de jointures sur de larges tables. Créer des vues sur des tables ordonnées différemment (différentes clé d’index cluster) A ne pas utiliser sur Tables dont les données sont fréquemment mises à jour Peuvent permettre de très forts gains de performances

Indexed views Utilisation uniquement sur des requêtes ayant un fort coût estimé. Peut être choisie par l’analyseur de requête même si elle n’y est pas référencé. NOEXPAND : Force l’utilisation EXPAND VIEWS : Exclue l’utilisation Un grand nombre de vues indexées peut ralentir le choix du meilleur plan d’exécution.

create view vdiscount2 with schemabinding as select top 5 productid, sum(unitprice*quantity*discount) as rebate from order_details group by productid order by rebate desc create view vdiscount2 with schemabinding as select sum(unitprice*quantity*discount) as sumdiscountprice2, productid from dbo.order_details group by productid create unique clustered index cdiscountint on vdiscount2(productid)

Covering Index Cas spécial de Non clustered index Index contenant toutes les colonnes utilisées dans une requête Gain de performances car Inutile d’accéder aux pages de données de la table car tout est contenu dans les pages de l’index. Les pages de l’index sont plus compactes que les pages de la table. Les pages de l’index sont triées

create index covering on orders (shipcountry, shipname) select shipname from orders where shipcountry = 'France‘ create index covering on orders (shipcountry, shipname)

Index intersection Le query optimiser peut utiliser plusieurs indexs d’une table.