Fonctionnement d un SGBD. L optimisation

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

Langage SQL : créer et interroger une base

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données relationnelles

Les bases de données

Le langage SQL Rappels

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

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

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

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

TP11 - Administration/Tuning

I4 : Bases de Données

TP Bases de données réparties

Bases de Données. Plan

Bases de données cours 1

Bases de données élémentaires Maude Manouvrier

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

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

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

Introduction aux Bases de Données

Le Langage De Description De Données(LDD)

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Bases de données et sites WEB

Bases de Données Avancées

A QUOI SERVENT LES BASES DE DONNÉES?

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

Évaluation et optimisation de requêtes

- ORS - Optimisation de Requêtes SQL sous Oracle

TP Contraintes - Triggers

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Bases de données avancées Introduction

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Création et Gestion des tables

UML et les Bases de Données

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

Dossier I Découverte de Base d Open Office

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

Le Langage SQL version Oracle

Rappel sur les bases de données

Optimisations des SGBDR. Étude de cas : MySQL

OpenPaaS Le réseau social d'entreprise

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

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

1 Introduction et installation

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

CATALOGUE FORMATIONS DOMAINE Bases de données

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

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

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

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

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

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

Information utiles. webpage : Google+ : digiusto/

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

Chapitre 10. Architectures des systèmes de gestion de bases de données

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

Optimisation SQL. Quelques règles de bases

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

Structure fonctionnelle d un SGBD

Les bases de données Page 1 / 8

16H Cours / 18H TD / 20H TP

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Bases de données - Modèle relationnel

Administration des bases de données relationnelles Part I

Notes de cours : bases de données distribuées et repliquées

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

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

PHP 4 PARTIE : BASE DE DONNEES

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

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements

INTRODUCTION AU DATA MINING

Administration de Bases de Données : Optimisation

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

Séance 1 Introduction aux bases de données

Partie II Cours 3 (suite) : Sécurité de bases de données

Cours: Administration d'une Base de Données

TP Administration Oracle

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

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

CREATION WEB DYNAMIQUE

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

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

FileMaker 13. Guide de référence SQL

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

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

Cours de bases de données. Philippe Rigaux

Compétences Business Objects

1 Position du problème

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

Utiliser Access ou Excel pour gérer vos données

Architectures, modèles et langages de données

Gestion des utilisateurs et de leurs droits

Quelques aspects du Relationnel-Objet du SGBD Oracle

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

Transcription:

Fonctionnement d un SGBD TD 7 (2 séances) L optimisation I. Révisions sur le l algèbre relationnelle EXERCICE 1 : relationnel suivant: (inspiré par Richard Grin et Isabelle Mirbel) Soit le schéma Employé(Matricule, Nom, Poste, DateEmbauche, MatriculeSupérieur, Salaire, Commission, NuméroDépartement) Département(Numéro, Nom, Lieu) Projet(Code, Nom) Participation(Matricule, CodeProjet, Fonction) Donnez la suite d opérations élémentaires de l algèbre relationnelle pour obtenir les données qui correspondent aux listes suivantes: 1. Matricule et nom des employés qui ont été embauchés avant le 1 janvier 1995. 2. Nom des employés qui ont le poste de secrétaire. 3. Nom des employés avec le nom du département où ils travaillent. 4. Nom des employés qui travaillent dans le département Finances. 5. Numéro des départements qui ont au moins un ingénieur. 6. Nom des employés qui gagnent plus que leur supérieur direct. 7. Matricule des employés qui participent à tous les projets. 8. Nom des employés qui participent à tous les projets. 9. Numéro des départements qui participent à tous les projets. 10. Nom des départements qui ont tous les postes. 11. Nom des employés qui ne participent à aucun projet. 12. Nom des départements qui ont à la fois au moins un ingénieur et au moins un secrétaire. Pierre Crescenzo inspiré par Isabelle Mirbel page 1 sur 6

II. Compléments du cours EXERCICE 1 : Soit un arbre algébrique et des informations statistiques sur les tables qu il manipule. Indiquez les exécutions possibles et évaluez leur coût d exécution. III. Application du cours EXERCICE 1 : Soit le schéma relationnel suivant: Etudiant(Id-Etud, Nom-Etud, Adr-Etud, Res) UFR(Id-UFR, Nom-UFR, Adr-UFR) Cours(Id-Cours, No-UFR, Libellé, Resp) Inscr(No-Cours, No-Etud, Note) Analysez l arbre de la figure suivante et essayez de l améliorer. Optimisez les requêtes suivantes en utilisant l optimisation d expression algébrique. Q1= π[nom-ufr, Adr-UFR]σ[Id-UFR = No-UFR](σ[Resp= Dupont ]Cours UFR) Pierre Crescenzo inspiré par Isabelle Mirbel page 2 sur 6

Q2 = select Nom-UFR, Libellé, Id-Cours from UFR, Cours, Inscr, Etudiant where (Nom-Etud = Smith ) and Cours.Id-Cours = Inscr.No-Cours) and (UFR.Id- UFR = Cours.No-UFR) and (Etudiant.Id-Etud = Inscr.No-Etud) Q3 = select Nom-Etud, Note, Id-Cours from Etudiant, Inscr, Cours, UFR where (Nom-UFR = Sciences ) and (Libellé= Philosophie ) and (Cours.Id- Cours = Inscr.No-Cours) and (UFR.Id-UFR = Cours.No-UFR) and (Etudiant.Id- Etud = Inscr.No-Etud) Considérons une base de données constituée des relations sui- EXERCICE 2: vantes: Production(NoPdt, Type, Modele, Qté, Machine) DetailCmde(NoCmde, NoPdt) Cmde(NoCmde, Client, Montant) Comm(NoCmde, Vendeur, Montant) et considérons les profils suivants: CARD(Production) = 200 000 SIZE(Production) = 41 CARD(DetailCmde) = 50 000 SIZE(DetailCmde) = 15 CARD(Cmde) = 10 000 SIZE(Cmde) = 45 CARD(Comm) = 5 000 SIZE(Comm) = 35 SIZE(NoPdt) = 10 VAL(NoPdt) = 200 000 SIZE(Type) = 1 VAL(Type) = 4 SIZE(Modele) = 10 VAL(Modele) = 400 SIZE(Qté) = 10 VAL(Qté) = 100 SIZE(Machine) = 10 VAL(Machine) = 50 SIZE(NoCmde) = 5 VAL(NoCmde) = 10 000 SIZE(Client) = 30 VAL(Client) = 400 SIZE(Montant) = 10 VAL(Montant) = 5000 SIZE(Vendeur) = 20 VAL(Vendeur) = 25 Décrivez l optimisation algébrique et le calcul des profils sur les résultats intermédiaires pour les requêtes suivantes. Pour cela écrivez les en SQL puis traduisez les en langage algébrique. Pour les deux dernières, qui nécessitent des jointures entre trois tables, donnez l ordre qui vous semble le plus indiqué. Donnez la quantité disponible du produit R2778. Donnez les machines nécessaires à la production des produits achetés par M. Dupont. Trouvez les clients qui ont acheté au vendeur Smith un produit du modèle M24. Pierre Crescenzo inspiré par Isabelle Mirbel page 3 sur 6

IV. Mise en pratique sous Oracle ORACLE EXPLAIN PLAN L outil EXPLAIN PLAN d ORACLE permet de soumettre une expression SQL et d obtenir un plan d exécution sans que la requête ne soit lancée. Voici les étapes à suivre avant d utiliser la commande EXPLAIN PLAN. Créez une table PLAN TABLE destinée à contenir toutes les informations relatives à un plan d exécution. CREATE TABLE PLAN_TABLE( STATEMENT_ID VARCHAR2(30), /* ID défini dans la commande SQL */ TIMESTAMP DATE, /* Date d exécution de la commande EXPLAIN */ REMARKS VARCHAR2(80), OPERATION VARCHAR2(30), /* Nom de l opération interne effectuée */ OPTIONS VARCHAR2(30), OBJECT_NODE VARCHAR2(30), OBJECT_OWNER VARCHAR2(30), OBJECT_NAME VARCHAR2(30), /* Nom de la table ou de l index */ OBJECT_INSTANCE NUMBER(38), OBJECT_TYPE VARCHAR2(30), SEARCH_COLUMNS NUMBER(38), ID NUMBER(38), /* Numéro affecté à chaque étape dans le plan */ PARENT_ID NUMBER(38), /* Numéro de l étape suivante */ POSITION NUMBER(38), /* Ordre de traitement des étapes qui ont le OTHER LONG); m^eme PARENT_ID */ Exécutez une requête d essai en demandant le stockage des explications relatives à cette requêtes dans la table précédemment créée. Exemple: EXPLAIN_PLAN SET STATEMENT_ID = R1 FOR SELECT * FROM matable WHERE id = 12; Interrogez cette table pour connaître le plan d exécution. Pierre Crescenzo inspiré par Isabelle Mirbel page 4 sur 6

EXERCICE 1: Créez les tables suivantes (tous les attributs sont des chaînes de caractères de longueur identique): Film(Titre, réalisateur, année) Vu(Spectateur, titre) Insérez-y quelques tuples. Utilisez la commande EXPLAIN PLAN pour regarder le plan d exécution correspondant à la requête: Donner les réalisateurs et les années des films qui ont été vus par au moins un spectateur. Ajoutez un index sur le titre dans la table film. Regardez à nouveau le plan d exécution d Oracle. Que constatez vous? Ajoutez un index sur titre dans la relation Vu. Il y a donc maintenant deux index. Regardez à nouveau le plan d exécution d Oracle. Que constatez vous? EXERCICE 2: Soit une requête sur la table Employé qui affiche le nom des employés (et leur département d appartenance) ayant un salaire (sans commission) supérieur à 10000. Analyser le plan d exécution dans chacune des situations suivantes: présence d un index sur Employé(Salaire) présence d un index sur Département(Numéro) et sur Employé(Salaire) présence d un index sur Employé(Numéro) et sur Employé(Salaire) Intéressons-nous maintenant à la requête qui donne le nom de tous les employés qui travaillent dans le département situé à Paris. On considère qu il n y a plus aucun index sur les relations de la bases de données. Écrivez la requête, sans utiliser de sous-requête, et analyse le plan d exécution. Écrivez la requête, en utilisant une sous-requête, et analyse le plan d exécution. Que constatez-vous? Le paramètre OPTIMIZER MODE configure l instance ORACLE. Sa valeur par défaut est CHOOSE, nécessaire pour une optimisation basée sur les coûts. L optimiseur effectue ce type d optimisation s il dispose de statistiques sur au moins une table de la requête. L outil ANALYZE permet de calculer des statistiques sur les tables et les index. On trouve alors les informations statistiques sur les tables dans la table USER TABLES et celles sur les index dans DBA INDEX, ALL INDEX et USER INDEXES. Exemples d utilisation: ANALYZE TABLE matable COMPUTE STATISTICS FOR TABLE; ANALYZE INDEX myindex COMPUTE STATISTICS; ANALYZE TABLE matable COMPUTE STATISTICS FOR ALL INDEXES; Pierre Crescenzo inspiré par Isabelle Mirbel page 5 sur 6

EXERCICE 3 : Examinez la structure de la table USER TABLES et faites afficher le nombre de lignes et le nombre de blocs des tables du schéma relationnel sur les employés. Lancez le calcul des statistiques sur les tables de ce même schéma relationnel. Affichez à nouveau le nombre de lignes et le nombre de blocs des tables du schéma relationnel sur les employés. Analysez la structure de la table USER INDEXES et faites afficher le nombre de niveaux, de blocs feuilles, de valeurs distinctes des index définis sur les clés primaires. Pierre Crescenzo inspiré par Isabelle Mirbel page 6 sur 6