Optimisation des Requêtes D après J. Akoka - I. Wattiau



Documents pareils
ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Optimisation SQL. Quelques règles de bases

Évaluation et optimisation de requêtes

Le langage SQL Rappels

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Administration de Bases de Données : Optimisation

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

TP Bases de données réparties

Bases de données relationnelles

Le Langage De Description De Données(LDD)

Les bases de données

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Bases de Données relationnelles et leurs systèmes de Gestion

Compte-rendu de projet de Système de gestion de base de données

Bases de Données. Plan

1 Introduction et installation

Bases de données et sites WEB

Langage SQL : créer et interroger une base

Le Langage SQL version Oracle

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Bases de données cours 1

Les bases de l optimisation SQL avec DB2 for i

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

16H Cours / 18H TD / 20H TP

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Java DataBaseConnectivity

Administration des bases de données relationnelles Part I

MODE OPERATOIRE OPENOFFICE BASE

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Session S12 Les bases de l optimisation SQL avec DB2 for i

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

//////////////////////////////////////////////////////////////////// Administration bases de données

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Cours Bases de données 2ème année IUT

Systèmes de Gestion de Bases de Données

Introduction au Système de Gestion de Base de Données et aux Base de Données

Encryptions, compression et partitionnement des données

Administration des bases de données. Jean-Yves Antoine

Bases de données avancées Introduction

Optimisations des SGBDR. Étude de cas : MySQL

INTRODUCTION : Données structurées et accès simplifié

A QUOI SERVENT LES BASES DE DONNÉES?

INTRODUCTION AU DATA MINING

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Oracle 11g Optimisez vos bases de données en production (ressources matérielles, stockage, mémoire, requêtes)

Implémentation des SGBD

Introduction aux SGBDR

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Intégrité des données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Du 10 Fév. au 14 Mars 2014

Structure fonctionnelle d un SGBD

Cours Bases de données 2ème année IUT

Présentation du module Base de données spatio-temporelles

Quelques aspects du Relationnel-Objet du SGBD Oracle

Introduction à JDBC. Accès aux bases de données en Java

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

2 Serveurs OLAP et introduction au Data Mining

Modélisation de bases de données : Le modèle relationnel

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

1. Base de données SQLite

MySQL / SQL EXEMPLES

Devoir Data WareHouse

Java et les bases de données

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Introduction aux Bases de Données

Cours: Les Jointures 1

Chapitre Introduction : Notion de Bases de données. 2. Définition : BD Répartie. 3. Architecture des SGBD. 4. Conception des bases réparties

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Bases de données. PTSI Lycée Eiffel. 28 février 2014

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

A QUOI SERVENT LES BASES DE DONNÉES?

PROJET 1 : BASE DE DONNÉES REPARTIES

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

Bases de Données Avancées

Bases de données et sites WEB Licence d informatique LI345

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Cours 4 : Agrégats et GROUP BY

Bases de Données Avancées

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Bases de données élémentaires Maude Manouvrier

Dossier I Découverte de Base d Open Office

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

SQL Historique

I4 : Bases de Données

Les bases de données Page 1 / 8

TP Contraintes - Triggers

TP Administration Oracle

PHP 5. La base de données MySql. A. Belaïd 1

Transcription:

NFE113 Administration et configuration des bases de données 2011 Optimisation des Requêtes D après J. Akoka - I. Wattiau 1 Eric Boniface

Introduction Fournir l'algorithme d'accès à la B.D. pour répondre à une requête exprimée en langage assertionnel Les étapes Analyse de la requête correction et simplification Ordonnancement en séquence d'opérations élémentaires plan d'exécution Exécution L optimisation des requêtes consiste à Maximiser le parallélisme entre les entrées/sorties Minimiser Le nombre d'e/s La taille mémoire nécessaire à l'exécution Le temps unité centrale 2

Analyse de requêtes Sur un exemple Question COURS (code, nomcours, nomprof) NOTE (code, matricule, note) ETUDIANT (matricule, nom, adresse) Quels sont les noms des cours suivis par l'étudiant DUPONT donnés par le professeur DURAND? En SQL : Select nomcours From cours Where nomprof = 'DURAND and code in (select code from note where matricule in (select matricule from etudiant where nom = 'DUPONT')); 3

Analyse de requêtes Graphe de connexion des relations Condition nécessaire pour que la question soit correcte : connexité du graphe des relations et qualifications cohérentes 2 requêtes sont équivalentes si graphes d'attributs transitivement identiques On peut compléter les graphes en y représentant les contraintes d'intégrité génération d'autres requêtes équivalentes 4

Ordonnancement et problèmes L'analyse de la requête l'ensemble des opérations de l'algèbre relationnelle à exécuter Une opération peut être exécutée dès que ses opérandes sont disponibles Si l'opération A n'utilise pas le résultat de l'opération B et vice-versa, A et B peuvent être exécutées en parallèle Identification des problèmes Non existence d index appropriés Non re-compilation de procédures stockées après modifications importantes de la base Existence de statistiques obsolètes 5

Décision d optimisation Quand une requête s exécute plus lentement que des requêtes similaires Quand le temps d exécution est jugé anormal par rapport à la taille des tables et par rapport aux index existants Quand un plan n utilise pas un index qu il devrait Quand le temps d exécution d une requête dans une procédure stockée > à celui de la requête directe Dans les SGBD du marché, deux méthodes Méthode dite syntaxique, principalement restructurations algébriques Méthode d estimation de coûts 6

Restructurations algébriques Etapes 1. Ecrire la suite des opérations 2. Découper les restrictions comportant plusieurs prédicats 3. Remonter les restrictions le plus haut possible 4. Regrouper les restrictions successives d une même relation 5. Refaire 2 et 3 pour les projections 7

Restructurations algébriques Arbre algébrique restructuré 8

Estimation de coûts Évaluer le coût d exécution de la requête en utilisant des statistiques sur Nb exact ou estimé de tuples et de blocs par table Nb de niveaux d index et nb de valeurs distinctes par attribut Sélectivité d un attribut = nb de val. différentes / nb tuples (1 pour les clés) Nb estimé de L/E logiques et physiques,... 9

Optimiseur Oracle Analyse de la requête Vérification de la syntaxe Recherche des tables et des colonnes dans le dictionnaire de données Ordonnancement séquence d'opérations élémentaires Génération d'un meta-code, requête SQL combinée avec des références à des index, des réservations d'espaces, etc. Exécution Recherche dans les index Si nécessaire, transfert de blocs en mémoire centrale Calcul de la réponse Affichage de la réponse 10

Optimiseur Oracle Deux stratégies d optimisation A base de règles (syntaxique) A base de coûts Choix pour une requête, pour session ou une instance Ajout de directives d optimisation dans une requête Dans ORACLE, les index sont utilisés selon la forme des clauses WHERE selon l'ordre suivant ROWID = cste Colonne d'index Unique = cste Index concaténé unique = cste Index concaténé non unique = cste Colonne d'index non unique = cste Index concaténé = cste 11

Optimiseur Oracle Dans ORACLE, les index sont utilisés selon la forme des clauses WHERE selon l'ordre suivant (suite) Partie gauche d'un index concaténé = cste Colonne d'index unique BETWEEN cste Colonne d'index non unique BETWEEN cste AND cste ou LIKE 'cste%' Colonne d'index unique > cste Colonne d'index non unique > cste ou < cste SORT/MERGE (jointures seulement) MAX (colonne indexée) ou MIN ORDER BY index AND cste ou LIKE"cste%" Parcours complet de la table 12

Optimiseur Oracle Exemple de plan : select p.libelle, s.qte from produit p, stock s where p.prodnum=s.prodnum; Explain plan set statement_id= XXX for select p.libelle. Puis select id, parent_id, operation, object_base,options from plan_table; 13

Exemple d opérations Exemple Cinéma(id-cinéma*, nom, adresse) salle(id-salle*, nom, capacité^,id-cinéma**) film(id-film*,titre, année, idréalisateur**) séance(id-séance*,heuredébut,heurefin,idsalle**,idfilm) artiste(id-artiste*,nom,datenaissance) * index unique ** index non unique ^ avec ou sans 14

Exemples Sélection sans index SELECT * FROM cinema WHERE nom='le Rex'; Plan d exécution 0 SELECT STATEMENT 1 TABLE ACCESS FULL CINEMA Opération 1 très coûteuse car balaie toute la table Cinéma Sélection avec index SELECT * FROM cinema WHERE IDcinéma=1908; Plan d'exécution 0 SELECT STATEMENT 1 TABLE ACCESS BY INDEX ROWID CINEMA 2 INDEX UNIQUE SCAN IDX-CINEMA-ID Avec ID-Cinema : index unique 15

Exemples Sélection conjonctive avec index SELECT capacité FROM salle WHERE IDcinéma=187 AND nom='salle 1'; Plan d'exécution 0 SELECT STATEMENT 1 TABLE ACCESS BY INDEX ROWID SALLE 2 INDEX RANGE SCAN IDX-SALLECINEMA-ID Avec ID-Cinema : index non unique 16

Exemples Sélection conjonctive avec 2 index SELECT nom FROM salle WHERE IDcinema=1098 AND capacité=150 Plan d'exécution 0 SELECT STATEMENT 1 TABLE ACCESS BY ROWID SALLE 2 AND-EQUAL 3 INDEX RANGE SCAN IDX-SALLE-CINEMA-ID 4 INDEX RANGE SCAN IDX-CAPACITE Avec ID-cinema et Capacité : index non unique (sans index = id précédente) 17

Exemples Sélection conjonctive avec 2 index SELECT nom FROM salle WHERE IDcinema=1098 AND capacité=150 Plan d'exécution 0 SELECT STATEMENT 1 TABLE ACCESS BY ROWID SALLE 2 AND-EQUAL 3 INDEX RANGE SCAN IDX-SALLE-CINEMA-ID 4 INDEX RANGE SCAN IDX-CAPACITE Avec ID-cinema et Capacité : index non unique (sans index = id précédente) 18

Exemples Sélection disjonctive avec des index SELECT nom FROM salle WHERE IDcinema=1098 OR capacité>150 Plan d'exécution 0 SELECT STATEMENT 1 CONCATENATION 2 TABLE ACCESS BY ROWID SALLE 3 INDEX RANGE SCAN IDX-CAPACITE 4 TABLE ACCESS BY ROWID SALLE 5 INDEX RANGE SCAN IDX-SALLE-CINEMA-ID Avec ID-cinema et Capacité : index non unique 19

Exemples Sélection avec et sans index SELECT nom FROM salle WHERE IDcinema=1098 OR nom='salle 1' Plan d'exécution 0 SELECT STATEMENT 1 TABLE ACCESS FULL SALLE Avec ID-cinema : index non unique L index n est pas utilisé 20

Exemples Jointure avec 1 index SELECT film.*from film, séance WHERE Film.idfilm=séance.idfilm Plan d'exécution 0 SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS FULL séance 3 TABLE ACCESS BY ROWID FILM 4 INDEX UNIQUE SCAN IDFILM_IDX Avec film.idfilm : index unique 21

Exemples Jointures avec 2 index SELECT cinema.nom, capacite FROM cinema, salle WHERE cinema.idcinema=salle.id-cinema; Plan d'exécution 0 SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS FULL SALLE 3 TABLE ACCESS BY ROWID CINEMA 4 INDEX UNIQUE SCAN IDX-CINEMA-ID Avec cinema.id-cinema : index unique et salle.id-cinema : index non unique 22

Exemples Jointure avec 2 index et sélection avec 1 index SELECT cinema.nom, capacite FROM cinema, salle WHERE cinema.id-cinema=salle.id-cinema AND capacite>150; Plan d'exécution 0 SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS BY INDEX ROWID SALLE 3 INDEX RANGE SCAN IDX-CAPACITE 4 TABLE ACCESS BY INDEX ROWID CINEMA 5 INDEX UNIQUE SCAN IDX-CINEMA-ID Avec cinema.id-cinema : index unique et salle.id-cinema : index non unique et capacite : index non unique 23

Jointures Jointures par boucles imbriquées Parcourir les tuples d une table (relation externe) Pour chaque tuple sélectionné, trouver les tuples dans l autre table (relation interne) qui joignent Dans la relation externe, les tuples accédés une seule fois Dans la relation interne, sans index, les tuples sont accédés de nombreuses fois Importance du choix de l ordre des jointures 4 algorithmes Boucles imbriquées si tables de grande taille Tri-fusion Hachage Par groupement en cas de cluster 24

Directives d optimisation Choose : stratégie à base de coûts avec optimisation globale si des stats existent, sinon à base de règles Rule : stratégie à base de règles (défaut) all_rows : à base de coûts avec optimisation globale first_rows : à base de règles avec minimisation du temps de réponse 25