Chapitre 6 : Optimisation de Requêtes

Documents pareils
Le langage SQL Rappels

1 Introduction et installation

Les bases de données

Bases de données avancées Introduction

TP Bases de données réparties

Langage SQL : créer et interroger une base

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

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

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

Évaluation et optimisation de requêtes

TD n 10 : Ma première Base de Données

Bases de Données. Plan

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

Introduction aux Bases de Données Relationnelles Conclusion - 1

INTRODUCTION AU DATA MINING

Dossier I Découverte de Base d Open Office

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Bases de données cours 1

Évaluation et implémentation des langages

Rappel sur les bases de données

16H Cours / 18H TD / 20H TP

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

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

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

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

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

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

1 Modélisation d une base de données pour une société de bourse

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

Interpréteur d algèbre relationnelle

Java DataBaseConnectivity

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

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

STAGE IREM 0- Premiers pas en Python

Administration des bases de données relationnelles Part I

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Systèmes de Gestion de Bases de Données

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

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

Bases de données élémentaires Maude Manouvrier

données en connaissance et en actions?

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Année Universitaire 2009/2010 Session 2 de Printemps

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

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

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

Introduction : présentation de la Business Intelligence

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Bases de Données Relationnelles. Le Modèle Relationnel

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

A QUOI SERVENT LES BASES DE DONNÉES?

Présentation du PL/SQL

Introduction aux Bases de Données

PLATEFORME MÉTIER DÉDIÉE À LA PERFORMANCE DES INSTALLATIONS DE PRODUCTION

Cours: Les Jointures 1

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

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

Devenez un véritable développeur web en 3 mois!

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Programmes des classes préparatoires aux Grandes Ecoles

Bases de données - Modèle relationnel

Encryptions, compression et partitionnement des données

Administration de Bases de Données : Optimisation

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

MODE OPERATOIRE OPENOFFICE BASE

CATALOGUE DES FORMATIONS 2014

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

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

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Projet Business Object

«Dire et écrire» pour réaliser une composition en travail collaboratif en géographie. Agnès Dullin, lycée J. Racine 20 rue du Rocher, Paris

A QUOI SERVENT LES BASES DE DONNÉES?

COURS de BASES de DONNEES

Créer le schéma relationnel d une base de données ACCESS

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Définitions. Numéro à préciser. (Durée : )

Optimisation SQL. Quelques règles de bases

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Bases de données relationnelles

Bases de données réparties: Fragmentation et allocation

Techniques d optimisation des requêtes dans les data warehouses

Vincent Augusto

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Information utiles. webpage : Google+ : digiusto/

Cours Bases de données

Le Langage SQL version Oracle

Jean-François Boulicaut & Mohand-Saïd Hacid

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

Cours 1 : La compilation

Décisionnel. SI Virtualisé. Performant. Cloud. SAP BusinessObjects. Dashboards. Expertise. Succès. Service Reporting. Finance. SaaS. Web 2.0.

Bases de données Cours 1 : Généralités sur les bases de données

Comment booster vos applications SAP Hana avec SQLSCRIPT

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Transcription:

1 Chapitre 6 : Optimisation de Requêtes Plan 1. INTRODUCTION 2. L ANALYSE DE QUESTION 3. ORDONNANCEMENT DES OPERATEURS a. Règles de transformation des arbres b. Algorithme simple de génération d un plan de requêtes 4. ESTIMATION DES COUTS D EXECUTION a. Utilisation de données statistiques b. Utilisation de procédures d implantation des opérateurs

2 Chapitre 6 : OPTIMISATION DE REQUETES 1. INTRODUCTION Un des objectifs des bases de données est de restituer l information dans des délais acceptables. Ceci ne peut se faire sans optimisation, c est-à-dire trouver la meilleure façon d accéder et de traiter les données afin de répondre à la requête. Or la plupart des SGBD fournissent des langages non procéduraux (assertionnels, algébriques) qui ne fournissent pas les chemins d accès aux données, ainsi l optimisation devient l affaire du système et échappe à l utilisateur qui formule sa requête. Pour cela, le SGBD dispose d un module d évaluation de questions qui permet de choisir la meilleure stratégie possible d exécution d une expression relationnelle. L évaluation de questions peut être divisée en trois grandes phases : - Analyse de la question et élaboration d un arbre de requête indépendamment des valeurs et des chemins d accès aux données. - Ordonnancement des opérations élémentaires (opérations algébriques) en utilisant des règles de transformation d expression, afin de construire des plans de requête. - Estimation des coûts d exécution des plans de requête obtenus dans l étape précédente afin de pouvoir choisir le moins coûteux. Exemple fixant la problématique : Nous travaillerons sur la base de données des fournisseurs avec les hypothèses suivantes : Cardinalité fournisseurs = 100, cardinalité four-produit = 10000 Soit la requête suivante : «donner les noms des fournisseurs de la pièce P2» La requête SQL est la suivante : SELECT nomf FROM fournisseur, four-produit Where nump = P2 and fournisseur.numf= four-produit.numf Un arbre algébrique non optimisé de la requête est le suivant : nomf Nump= P2 Fournisseur four-produit Evaluation de l arbre non optimisé : - 1 ière étape : jointure des relations fournisseur et four-produit : - lecture des 10000 tuples de four-produit, puis lecture de chacun des 100 fournisseurs 10000 fois, construction du résultat intermédiaire de jointure (10000 tuples joints). Il n est pas sûre que celle-ci puisse être gardée en mémoire. - 2 ième étape : restriction du résultat de l étape précédente

3 - les seuls tuples vérifiant nump= P2 seront gardés. Nous supposons qu ils sont 50 et peuvent être gardés en mémoire. - 3 ième étape : projection sur le nomf - parcours des 50 tuples du résultat précédent afin de ne garder que nomf. Nous constatons la perte de temps en effectuant la jointure en premier du fait des lectures répétées. La stratégie suivante est beaucoup plus efficace : - 1 ère étape : effectuer la restriction de four-produit à nump= P2 - lecture des 10000 tuples de four-produit pour ne garder en mémoire qu une table de 50 tuples - 2 ième étape : effectuer la jointure du résultat précédent avec fournisseur - cette étape entraîne l extraction des 100 fournisseurs. Le résultat contient 50 tuples - 3 ième étape : effectuer la projection Ainsi la commutation de la jointure et la restriction réduit considérablement le nombre de transferts de la mémoire secondaire vers la mémoire centrale, donc implique un gain de temps et donc une réduction du coût. Nous verrons plus formellement cette stratégie dans le paragraphe suivant. 2. L ANALYSE DE QUESTION Objectif : étude syntaxique de la question, c est-à-dire vérification de sa correction et parfois une analyse sémantique est effectuée. Lors de cette étape, il y a vérification de la présence des attributs référencés avec les catalogues. Résultat : génération d un arbre de requêtes. Un arbre de requêtes est construit en utilisant une syntaxe abstraite associée aux opérateurs de l algèbre relationnelle ou au calcul relationnel. Pour des raisons de commodité et afin de faciliter la compréhension, nous travaillerons sur une syntaxe proche de la notation utilisée dans l algèbre relationnel. L arbre de requêtes sera alors un arbre algébrique. Un arbre algébrique est un arbre dont : - les nœuds terminaux sont des relations, - les nœuds intermédiaires sont des opérateurs de l algèbre relationnelle, - le nœud racine est le résultat de la question, - les arcs sont les flux de données entre les opérateurs. L analyse sémantique consiste à vérifier si la question est bien formulée comme par exemple s il y a oubli d un opérateur ou s il y a des contradictions (sélection avec deux critères >10 et <10 par exemple). 3. ORDONNANCEMENT DES OPERATIONS L ordonnancement des opérations relationnelles est complexe. Nous ne verrons dans cette partie qu un ordonnancement bas é sur une restructuration algébrique. L optimisation dépend en grande partie de l ordre d exécution des opérateurs apparaissant dans l arbre algébrique utilisé. Stratégie générale d une optimisation - Traduire les sous-arbres booléens en une opération ayant un prédicat composé.

4 - Effectuer les opérations unaires de restriction et projection le plus tôt possible car elles réduisent respectivement le degré et la cardinalité d une relation. - Pré-traiter les relations avant d effectuer la jointure soit en créant des index soit en effectuant le tri. - Rechercher les sous expressions communes à plusieurs sous-arbres pour les préévaluer. - Traiter en une seule fois les opérations de restriction et projection sur une même relation. 3.1. REGLES DE TRANSFORMATION DES ARBRES 3.1.1. Règles de regroupement Règle 1 : regroupement des projections ( (R/ A1, A2,, An)) / B1, B2,, Bp) = (R / B1, B2,, Bp) avec {Bj} {Ai} Règle 2 : regroupement des restrictions ( ( R / Xi a)/ Xj b ) = ( R / Xi a Xj b) 3.1.2. Règles de commutativité Règle 3 : Commutativité des jointures et produit cartésien R1 R2 = R2 R1 Ou ou = R1 R2 R2 R1 Les opérateurs d union et d intersection sont aussi commutatifs, la différence ne l est pas. 3.1.3. Règles de commutation La distributivité d un opérateur sur un opérateur s exprime comme suit : (R1 R2) = ( R1) ( R2) Règle 4 : Commutation des restrictions et projections 1 er cas : l argument de restriction fait partie des attributs de projection /(X1,,,Xi) ( (R/ (Xp a )) = / ( Xp a ) ( (R / (X1,, Xp,Xi))

5 2 ième cas : Sinon /(X1,,,Xi) ( (R/ (Xp a )) = )/ X1,,Xi ( / Xp a ( (R/(X1,,Xi, Xp) )) Règle 5 : Commutation des restrictions avec l union ( Union (R1, R2 ) / Xp a) = Union ( (R1/ Xp a), ( R2/ Xp a)) Règle 6 : Commutation des restrictions avec la différence ( Minus (R1, R2 ) / Xp a) = Minus ( (R1/ Xp a), ( R2/ Xp a)) Règle 7 : Commutation des restrictions avec le produit cartésien 1 er cas : la restriction porte sur l argument d une seule relation : les deux relations n ont pas d attributs communs : R1 (., Xi, ), R2 (., Yj, ) (R1 R2) / (Xi a) ) = (R1/ (Xi a)) R2 2 ième cas : la restriction porte sur deux arguments respectifs de R1 et R2, les deux relations n ont pas d attributs communs : R1 (., Xi, ), R2 (., Yj, ) (R1 R2) / (Xi a Yj b) ) = (R1/ (Xi a)) (R2/ (Yj b)) 3 ième cas : la restriction porte sur deux arguments respectifs de R1 et R2, les deux relations ont un attribut commun Xp : R1 (., Xi, Xp, ), R2 (., Xp, ) (R1 R2) / (Xi a Xp b) ) = ( ( (R1/ (Xi a)) R2 )/ (Xp b) )

6 Règle 8 : Commutation des projections et produit cartésien Soient R1 (., Xi, ) et R2 (., Yj, ) ( (R1 R2) / X1,, Xp, Y1, Yp ) = (R1 / X1,, Xp) (R2 / Y1,,Yp) Règle 9 : commutation des projections avec l union ( (R1 Union R2) / X1,, Xp ) = (R1 / X1,, Xp) Union (R2 / X1,,Xp) Règle 10 : Cas de la jointure naturelle Une jointure naturelle de R1 ( X1., Xi,,Xn), R2 (Y1,., Xi,,Ym) est une restriction d un produit cartésien à Xi = Xi suivie de la projection sur R1R2 Commutation avec la projection : ( (R1 R2 ) / X1.XpY1 Yq ) = ( (R1 / X1,, Xp,Xi) (R2 / Y1,,Yp,Xi)/ X1..XpY1..Yq ) Remarque : la dernière projection n est nécessaire que si Xi n appartient pas à X1, Xp ou Y1,..,Yq Commutation avec la restriction : R1 (,Xi, ) et R2 (,Xi,..Yj, ) (( R1 R2 ) / (Yj b)) = R1 ( (R2 / (Yj b)) A toutes ces règles peuvent être rajoutées des règles d associativité. L associativité est définie comme suit : A (B C) = (A B) C L union, l intersection, et la jointure sont toutes associatives. La différence ne l est pas.

7 3.1.4. Algorithme simple de génération d un plan de requête Un algorithme simple d utilisation des règles précédemment décrites afin de générer des plans de requêtes est le suivant : [Miranda p 246] - Appliquer les règles 1 et 2 pour regrouper les restrictions et projections - Faire descendre les restrictions le plus bas possible à l aide de la règle R4 (pour passer une projection), de R5 et R6 (pour passer une union ou une différence) de R7 (pour passer un produit ou une jointure) et combiner éventuellement des restrictions avec R2 - Faire descendre les projections à travers les projections en utilisant la règle R1, à travers les restrictions ( R4 ), à travers les produits (R8), à travers les jointures (R10) - Supprimer les projections redondantes : - Au niveau des feuilles de l arbre de requêtes si tous les attributs sont cités - Au niveau des nœuds par l utilisation de la règle de regroupement R1 Plusieurs plans de requêtes peuvent être généré par transformations d expressions. L optimiseur devra choisir alors le moins coûteux. C est l étape d estimation des coûts d exécution qui permettra de choisir. 4. ESTIMATION DES COUTS D EXECUTION Une solution simple pour choisir le meilleur plan d exécution consiste à les générer tous et à estimer le coût d exécution de chacun et choisir le moindre coût. Malheureusement cette démarche n est pas très réalisable car : - le nombre de plans peut être très grand - la taille des résultats intermédiaires pris en compte est un surcoût. Une solution simple consiste à utiliser des connaissances statistiques stockées, et des connaissances sur les coûts d implantation des opérateurs, afin de choisir la meilleurs stratégie d exécution. 4.1. UTILISATION DE DONNEES STATISTIQUES L estimation du coût d exécution utilisent les statistiques de la base de données mémorisées dans les catalogues. Nous rappelons que certaines informations comme la cardinalité des relations existent déjà dans les catalogues déjà vus. Certaines informations complémentaires sont disponibles comme le nombre de pages occupées par une table, le nombre distinct de valeurs dans une colonne, le nombre de niveaux d index, le nombre de pages de chaque niveau 4.2. UTILISATION DE PROCEDURES D IMPLANTATION DES OPERATEURS Le programme d optimisation va avoir à sa disposition un ensemble de procédures d implantation prédéfinies des opérateurs. Par exemple : la restriction pourra être implémentée différemment suivant que la formule de qualification fait référence à une clé, ou à un attribut non clé mais indexé, ou tout simplement à un attribut non clé non indexé. La jointure de deux relations R1 et R2 peut être implémentée brutalement à l aide de deux boucles imbriquées (une boucle externe complète sur les occurrences de R1 et une boucle interne complète sur les occurrences de R2), ou s il existe un index sur l attribut de jointure, il ne sera pas nécessaire d effectuer la deuxième boucle mais effectuer un accès direct au tuple (recherche indexée)

8 ou encore il sera possible de trier les deux relations suivant l attribut de jointure, ainsi le parcours des deux relations pourra être synchronisé et ne fournira qu un seul parcours de données sans redondance (implémentation par fusion). Chaque procédure aura une formule de coût paramétrée qui pourra ainsi guider l optimiseur dans son choix. Exemple : soit la base de données suivante : Fournisseur (nf, nomf, codf, villef) Produit (np, désignation, villep) Four-prod (nf, np, qte) Et soit la requête : Select nomf, codf From Fournisseur, Four-Prod Where Fournisseur.nf = Four-Prod.nf and VilleF = Tunis and np = P1 Project Nomf, codf Select = Select np P1 = Join VilleF Tunis Fournisseur = Four-Prod Nf Nf Une séquence SQL peut donner lieu à différentes interprétations qui peuvent conduire à différents temps d exploitation. L étape d optimisation a lieu qui consiste en : - grâce aux différents catalogues qui décrivent la base (la méta base), le système peut faire la correspondance entre les noms symboliques (noms de relations, d attributs) et les objets effectivement gérés par le système (analyse sémantique). - Le système vérifie que l usager qui a émis la requête va manipuler les objets qu il est effectivement autorisé à manipuler (gestion des droits d accès et de la confidentialité). - Un ordre peut faire référence à une relation de base ou à une vue. La vue est définie par référence à des relations de base. Il convient alors de remplacer la référence à la vue par une référence aux relations de base (phase de substitution).

9 - Déterminer les chemins d accès disponibles et la meilleure stratégie d accès aux données. Pour cela, le système dispose dans ces catalogues des index définis sur chaque relation mais aussi d informations statistiques sur les relations à manipuler. Résultat de l étape : arbre optimisé à partir duquel il y a exécution. L interpréteur SQL fournit le résultat de la requête en exécutant les opérateurs contenus dans l arborescence à l aide de procédures associées à ces différents opérateurs. Project Nomf, codf join Project = Project Nf Np Nf, Nomf, Codf Nf Select Select Four-Prod = Fournisseur = Np P1 Villef Tunis

10 Exemple fixant la problématique : Nous travaillerons sur la base de données des fournisseurs avec les hypothèses suivantes : Cardinalité fournisseurs = 100, cardinalité four-produit = 10000 Soit la requête suivante : «donner les noms des fournisseurs de la pièce P2» La requête SQL est la suivante : SELECT nomf FROM fournisseur, four-produit Where nump = P2 and fournisseur.numf= four-produit.numf Un arbre algébrique non optimisé de la requête est le suivant : nomf Nump= P2 Fournisseur four-produit Evaluation de l arbre non optimisé : - 1 ière étape : jointure des relations fournisseur et four-produit : - lecture des 10000 tuples de four-produit, puis lecture de chacun des 100 fournisseurs 10000 fois, construction du résultat intermédiaire de jointure (10000 tuples joints). Il n est pas sûre que celle-ci puisse être gardée en mémoire. - 2 ième étape : restriction du résultat de l étape précédente - les seuls tuples vérifiant nump= P2 seront gardés. Nous supposons qu ils sont 50 et peuvent être gardés en mémoire. - 3 ième étape : projection sur le nomf - parcours des 50 tuples du résultat précédent afin de ne garder que nomf. Nous constatons la perte de temps en effectuant la jointure en premier du fait des lectures répétées. La stratégie suivante est beaucoup plus efficace : - 1 ère étape : effectuer la restriction de four-produit à nump= P2 - lecture des 10000 tuples de four-produit pour ne garder en mémoire qu une table de 50 tuples - 2 ième étape : effectuer la jointure du résultat précédent avec fournisseur - cette étape entraîne l extraction des 100 fournisseurs. Le résultat contient 50 tuples - 3 ième étape : effectuer la projection Ainsi la commutation de la jointure et la restriction réduit considérablement le nombre de transferts de la mémoire secondaire vers la mémoire centrale, donc implique un gain de temps et donc une réduction du coût. Nous verrons plus formellement cette stratégie dans le paragraphe suivant.