Administration de Bases de Données : Optimisation



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

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

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

Introduction aux SGBDR

TP11 - Administration/Tuning

Évaluation et optimisation de requêtes

Langage SQL : créer et interroger une base

Les bases de données

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

Encryptions, compression et partitionnement des données

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Administration des bases de données relationnelles Part I

TP Bases de données réparties

Bases de Données Avancées

Le langage SQL Rappels

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

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

Master Exploration Informatique des données DataWareHouse

Optimisations des SGBDR. Étude de cas : MySQL

16H Cours / 18H TD / 20H TP

Bases de données élémentaires Maude Manouvrier

Dossier I Découverte de Base d Open Office

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

Structure fonctionnelle d un SGBD

Optimisation SQL. Quelques règles de bases

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

Systèmesdegestionde. basesdedonnées

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

1. Qu'est qu'un tablespace?

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Bases de données relationnelles

Du 10 Fév. au 14 Mars 2014

Le Langage SQL version Oracle

Le Langage De Description De Données(LDD)

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

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

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

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

ÉPREUVE COMMUNE DE TIPE Partie D

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

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

Bases de données et sites WEB

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

Intégrité des données

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

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

Les bases de données Page 1 / 8

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

Big Data et Graphes : Quelques pistes de recherche

1 Introduction et installation

Evry - M2 MIAGE Entrepôts de Données

A QUOI SERVENT LES BASES DE DONNÉES?

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

A QUOI SERVENT LES BASES DE DONNÉES?

Partie 7 : Gestion de la mémoire

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

Mise en oeuvre TSM 6.1

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)

Bases de Données. Plan

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

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Notion de base de données

Bases de données documentaires et distribuées Cours NFE04

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

Les bases de l optimisation SQL avec DB2 for i

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

Administration de Base de Données Notes de cours

Bases de Données Avancées

Cours Bases de données

Architectures, modèles et langages de données

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

Création et Gestion des tables

Quelques aspects du Relationnel-Objet du SGBD Oracle

Bases de données avancées Introduction

Big Data et Graphes : Quelques pistes de recherche

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

Systèmes de Gestion de Bases de Données

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours de bases de données. Philippe Rigaux

CHAPITRE 1 ARCHITECTURE

Gestion des utilisateurs et de leurs droits

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales

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

Compétences Business Objects

Corrigés détaillés des exercices

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

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Bases de données cours 1

Information utiles. webpage : Google+ : digiusto/

Plan. Ce qu est le datawarehouse? Un modèle multidimensionnel. Architecture d un datawarehouse. Implémentation d un datawarehouse

TD : Codage des images

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

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

Introduction à MATLAB R

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

Transcription:

Administration de Bases de Données : Optimisation FIP 2 année Exercices CNAM Paris Nicolas.Travers(at) cnam.fr

Table des matières 1 Stockagedans unsgbd 3 1.1 Stockage............................................. 3 1.2 B+Tree.............................................. 4 1.3 Index dense et non-dense.................................... 4 2 Interrogation des indexes 5 2.1 Requêtes mono-attributs.................................... 5 2.2 Requête multi-attribut..................................... 5 3 Indexes Bitmap et Hachage 7 3.1 Bitmap.............................................. 7 3.1.1 Création du bitmap................................... 7 3.1.2 Interrogationdu Bitmap................................ 7 3.2 Tables de hachage........................................ 7 3.2.1 Création dela table de Hachage............................ 8 3.2.2 Interrogationde la table de hachage......................... 8 3.3 Pour aller plus loin....................................... 8 3.3.1 Le hachage MD5..................................... 8 4 Jointures 11 4.1 Algorithmes de Jointures.................................... 11 4.2 Evaluation d une requête.................................... 11 5 Optimisation et EXPLAIN 13 5.1 Optimisation........................................... 13 5.2 EXPLAIN............................................. 14 6 Choix de stockage 15 6.1 Choix deschéma......................................... 15 6.2 Oracle.............................................. 15 6.3 DB2................................................ 16 6.4 SQL Server............................................ 16 7 Tuning de requêtes 17 7.1 Amélioration derequêtes.................................... 17 7.2 Indexation de fonction..................................... 17 7.3 Vue matérialisée......................................... 18 7.4 HINT............................................... 18

1StockagedansunSGBD Le schéma de base de données suivant, ainsi que ses statistiques, seront utilisés dans l ensemble des exercices du cours. 1. Schémadelabasededonnées : Cours (Id_Cours, Id_Enseignant, Intitule) Personne (Id_Personne, Nom, Prenom, Annee_Naissance) Salle (Id_Salle, Localisation, Capacite) Reservation (Id_Salle, Id_Cours, Date, heure_debut, heure_fin) 2. Taille des différents types: Les identifiants (Id_...) et les nombres(ects, Capacite) sont codés sur 4 octets, les dates et heures sur 4octets, Nom, Prenom, Intitule, Localisation sur 50 octets 3. Statistiques : 2200 tuples dansla tablecours, 124 000 tuples Personne (Contenant enseignants et auditeurs), 500 tuplessalle (Avec une capacitede 20 à 600), 570 000 tuples Reservation. 4. Configuration Base de données : Tailled un ROWID:10 octets 11 pages en mémoire centrale, une pagefait 8 ko,dont 10% sont utilisées pourles mises à jour et les pointeurs(pctfree) 1.1 Stockage 1. Calculer la taille d une page utile (DataBlock), sachant que l entête d une page est de 192 octets 2. Calculer en nombre de pages, la taille de chaque table en nombre de pages (proposer le résultat sous forme de tableaux) 3. Aucun index n est encore créé. Combien coûte la requête suivante : SELECT Date, heure_debut FROM Reservation WHERE Id_Cours = NFE106 ; 4. Si l on considère que pour un disque dur un secteur est égal à une page de nombre base de données, et que le disque à un temps de latence de 9ms en moyenne pour atteindre un secteur. Quel temps faut-il pour évaluer la requête précédente? 5. Un index sur l attribut Localisation aiderait à accéder uniquement à la salle concernée. Afin de retrouver le tuple, nous avons besoin d un ROWID (pointeur logique). Détailler la composition d un ROWID qui pourrait correspondre(après décompression) à ceci : 3.376.26.0 6. Supposons que l on supprime ce tuple de la table. Comment par la suite peut-on retrouver la place libre pour la remplir avec un nouveau tuple? Comment doit-on faire si l on en supprime plusieurs à la suite?

1.2. B+TREE CHAPITRE 1. STOCKAGE DANS UN SGBD 1.2 B+Tree 1. Nous souhaitons créer un index B+Tree sur l attribut Identifiant de la table Salle. Donner l index B+Tree d orbre 2 après insertion des valeurs suivantes. Vous ferez apparaître les étapes d éclatement : 100, 25, 72, 48, 10, 33, 58, 110, 40, 52, 115, 80, 5, 28, 49, 75 2. Donner la requête SQL de création de cet index. 3. Nous créons maintenant un index d orbre 3 sur l attribut Capacité de la table Salle, avec les valeurs suivantes : 20, 30, 40, 20, 25, 200, 300, 150, 40, 20, 20, 50, 30 4. Lors de la création d un index, on ne spécifie pas l ordre de celui-ci. Il est calculé automatiquementenfonctiondelatailledel attribut indexé, durowidassociéàchaquevaleur, et dela taille d une page(idem que pour les données). Calculer l ordre de l index sur l attribut Capacité. 5. Auvu de l ordre d un BTree,on peut estimer la hauteur de cet index (permet d estimer son coût de parcours). Donner la hauteur de l index sur la Capacité. 1.3 Index dense et non-dense 1. Quelle est la hauteur maximum d un index dense sur l attribut id_personne de la table Personne? 2. Quelle est la hauteur maximum d un index non-dense sur l attribut id_personne de la table Personne? 3. Donner la requête SQL (sous Oracle) pour la création de la table Personne en index non-dense 4. On souhaite maintenant ajouter un index sur l attribut Personne, peut-il être un index nondense?

2 Interrogation des indexes Informations sur la Base de Données Pagedisque : 8ko Tailled un ROWID:10o PCTFree : 10% (page utile 7 372o) M =11 Clustering Factor,par défaut : dense (φ = R ),non-dense (φ = R ) Schéma de la base : Table Attributs Taille Nb tuples Nb tuples/pages Cours (Id_Cours, Id_Enseignant, Intitule) 20 pages 2 200 112 Personne (Id_Personne, Nom, Prenom, Annee_Naissance) 2 000 pages 124 000 62 Salle (Id_Salle, Localisation, Capacite) 5 pages 500 112 Reservation (Id_Salle, Id_Cours, Date, heure_debut, heure_fin) 2 000 pages 570 000 285 2.1 Requêtes mono-attributs 1. Pour la requête suivante, donner le coût d évaluation en séquentiel, index dense, index nondense : SELECT Nom, Prenom FROM Personne WHERE Id_Personne = 125; 2. Idem pour la requête suivante, sachant la répartition des années de naissance dans l histogramme2.1. Index sur l année de naissance, dense ( I =3), non-dense ( I =2) : SELECT Nom, Prenom FROM Personne WHERE Annee_Naissance = 1979; Année 1978 1979 1980 1981 1982 1983 1984 Pourcentage 2,04 3,226 3,2 2,12 2,63 2,48 1,99 Table 2.1 Histogramme de répartition des années de naissance 3. Pour la requête précédente, on créer un index sur Annee_Naissance et couvrant sur Nom, Prenom. Calculer l ordre de l index(nom et Prenom sont stockés dans l index), sa hauteur max et le coût de la requête. 2.2 Requête multi-attribut 1. Donner le nombre de tuples résultats pour la requête suivante, sachant qu il y a 10 000 prénoms différentset 3,226% des personnessont nées en 1979 : SELECT Nom, Prenom FROM Personne WHERE Annee_Naissance = 1979 AND Prenom like Nicolas ; 2. Donner le coût d évaluation pour la requête précédente avec : En séquentiel, Index dense sur Annee_Naissance,

2.2. REQUÊTE MULTI-ATTRIBUT CHAPITRE 2. INTERROGATION DES INDEXES Index non-dense sur Annee_Naissance, Index dense sur Annee_Naissance et couvrant sur Nom et Prénom, Index dense sur le Prénom. 3. Quel est le coût de cette même requête si l on combine les index dense Annee_Naissance et Prenom?

3 Indexes Bitmap et Hachage Informations sur la Base de Données Pagedisque : 8ko Tailled un ROWID:10o PCTFree : 10% (page utile 7 372o) M =11 Clustering Factor,par défaut : dense (φ = R ),non-dense (φ = R ) Schéma de la base : Table Attributs Taille Nb tuples Nb tuples/pages Cours (Id_Cours, Id_Enseignant, Intitule) 20 pages 2 200 112 Personne (Id_Personne, Nom, Prenom, Annee_Naissance) 2 000 pages 124 000 62 Salle (Id_Salle, Localisation, Capacite) 5 pages 500 112 Reservation (Id_Salle, Id_Cours, Date, heure_debut, heure_fin) 2 000 pages 570 000 285 3.1 Bitmap 3.1.1 Création du bitmap 1. Donnez un exemple de bitmap pour la table Personne sur l attribut Année, répartie de 1970 à 1992. 2. Quel est la taille d un vecteur Année? 3. Quel est la taille de l index? 3.1.2 Interrogation du Bitmap Pour chaque requête, donner le coût avec un index dense sur l Année (hauteur 3, 3,226% en 1979, 200 valeurs par feuilles) et avec le Bitmap sur l année. 1. SELECTCOUNT( ) FromPersonne Where Annee = 1979; 2. SELECTCOUNT( ) FromPersonne Where Annee < 1980; 3. SELECTAnnee,COUNT( )From Personne GroupBy Annee ; 4. Donner la requête SQL pour créer un index Bitmap sur Personne.Annee. 3.2 Tables de hachage Nous utiliserons deux fonctions de hachage différentes : H 1 =x modn H 2 = x n N

3.3. POUR ALLER PLUS LOIN CHAPITRE 3. INDEXES BITMAP ET HACHAGE x est la valeur que l on souhaite insérer, comprisentre 0et N-1. H est la valeur hachée de x, comprisentre 0 et n-1 (cette valeur correspondàl indice dans la table de hachage). 3.2.1 Création de la table de Hachage On souhaite créer une table de hachage(ou table partitionnée) sur la table Reservation sur Id_Cours (permet de regrouper les séances prévues pour un même cours dans une même partition). 1. Créez un exemple de table de hachage de taille n = 10, et insérer les id_cours suivants en utilisant H 1 puis H 2 (avec N = 100) : 1, 12, 3, 15, 30, 42, 15, 60, 31, 12, 58, 78, 16, 15, 16 2. Auvudesstatistiquesdelabasededonnées,etensupposantunerépartitionuniformedescours: (a) Combien de fois un identifiant de cours apparaît-il dans cette table? (b) Combien de fois un identifiant de salle apparaît-il? (c) Combien de d identifiants différents par partition pour une table de hachage de taille 500? 3. Quelle est la taille d une partition pourune table dehachage de taille 500? 4. Quelle est la taille de la table partitionnée? 5. Donner la requête SQL de création de la table Reservation en table partitionnée par hachage (500 partitions). 6. Est-il possible decréer uneindex non-dense et une table de hachage sur la même table? 3.2.2 Interrogation de la table de hachage 1. Quel est le coût d évaluation pour la requête suivante (BTree dense / non-dense de hauteur 3, Hachage) : SELECT Id_Salle, Date, heure_debut FROM Reservation WHERE Id_Cours = 300; 2. BTree non-dense et Hachage semblent similaires en temps de réponse. En serait-il de même si nous avions indexé/haché Id_Salle? 3.3 Pour aller plus loin 3.3.1 Le hachage MD5 Pour compléter vos connaissances, voici le hachage MD5 (hachage par défaut sous Oracle) : MD5 (Message Digest 5) est une fonction de hachage cryptographique qui permet d obtenir pour chaque message une empreinte numérique (en l occurrence une séquence de 128 bits ou 32 caractères en notation hexadécimale) avec une probabilité très forte que, pour deux messages différents, leurs empreintes soient différentes. L algorithme consiste en l application successives de nombreuses opérations booléennes aboutissant à la génération d une séquence de 128 bits. Supposonsun message que l on souhaite crypter sur b bits :m 0, m 1...m b 1. Pour le crypter,il faut suivre 5 étapes :

CHAPITRE 3. INDEXES BITMAP ET HACHAGE 3.3. POUR ALLER PLUS LOIN 1. Remplissage de bits : Le message est étendu à 448 bits, modulo 512 bits (il y a X mots de 512 bits, et 1 de448 bits. Avec X 512<b). Pour remplir le message à 448bits modulo 512, un bit à 1 est ajouté puis des bits à 0. 2. Modification de la taille : Afin d arriver à un multiple de 512, la taille du message d origine (codé en 64 bits) est ajouté à la fin du message obtenu en (1). Ce qui nous donne au final un multiple de 512 (448+64=512!!).Nous obtenons des motsde 16 bits notés : M 0,M 1...M N 1. 3. Initialisation des buffers: Des buffers de 4 mots(a,b,c,d) de 32 bits sont utilisés pour procéder le message. Chaque mot initialisé avec les valeurs suivantes en hexadécimale : A = 01 2345 67 B = 89ab cdef C = fedc ba 98 D = 7654 32 10 4. Manipulation de messages par bloc de 16 mots: Tout d abord, il faut définir 4 fonctions prenant chacune3motsde 32 bits, produisant un mot de 32 bits en sortie: F(X,Y,Z)=(X Y) ( X Z) G(X,Y,Z)=(X Z) (Y Z) H(X,Y,Z)=X Y Z I(X,Y,Z)=Y (X Z) Pour cette étape, nous avons besoin d un tableau T de 64 bits (4 x 16) construit à partir de la fonction sinus. T[i] sera le i eme élément de T, qui est égal à la partie entière de : 2 2256 sin(i), i étant en radians. Nous procédons alors ainsi : / * Pour chaque bloc de 16 mots * / For i = 0 to N/16-1 do / * Copie du bloc i dans X. * / For j = 0 to 15 do Set X[j] to M[i * 16+j]. end / * Sauvegarde de A en AA, B en BB, C en CC, et D en DD. * / AA = A, BB = B, CC = C, DD = D / * 1 étape. Soit [abcd k s i] correspondant à la suite d opération suivante : a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). Faire les 16 opération suivantes : * / [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] / * 2 étape. Cette fois-ci [abcd k s i] correspond à a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). * / [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32] / * 3 étape. Cette fois-ci [abcd k s i] correspond à a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). * / [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48] / * 4 étape. Cette fois-ci [abcd k s i] correspond à a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). * / [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] / * Enfin, effectuer les additions suivantes * / A = A + AA, B = B + BB, C = C + CC, D = D + DD end / * fin de la boucle i * / 5. Sortie : Après avoir procédé le message, la sortie correspond à la concaténation de A,B,C et D.

3.3. POUR ALLER PLUS LOIN CHAPITRE 3. INDEXES BITMAP ET HACHAGE

4Jointures Informations sur la Base de Données Pagedisque : 8ko Tailled un ROWID:10o PCTFree : 10% (page utile 7 372o) M =11 Clustering Factor,par défaut : dense (φ = R ),non-dense (φ = R ) Schéma de la base : Table Attributs Taille Nb tuples Nb tuples/pages Cours (Id_Cours, Id_Enseignant, Intitule) 20 pages 2 200 112 Personne (Id_Personne, Nom, Prenom, Annee_Naissance) 2 000 pages 124 000 62 Salle (Id_Salle, Localisation, Capacite) 5 pages 500 112 Reservation (Id_Salle, Id_Cours, Date, heure_debut, heure_fin) 2 000 pages 570 000 285 Pour chacun des algorithmes suivants, donner son coût d évaluation et les conditions d utilisation (si nécessaires), en tenant compte de : Nombrede page R et S ; Nombrede tuples R et S ; Tailledes index I R ou I S et sa sélectivité sel; Nombrede pagesen mémoirecentrale M ; Optimisation possible avec une structure ou un index. 4.1 Algorithmes de Jointures 1. Jointure par boucles imbriquées 2. Jointure par boucles imbriquées avec Index 3. Jointure par Tri-Fusion 4. Jointure par Hachage en mémoire 5. Jointure par Hachage sur le disque 4.2 Evaluation d une requête 1. Donner le coût d évaluation de la requête suivante avec les différents algorithmes de jointures. Vous devrez calculer les tailles de résultats intermédiaires (avec PCTFREE 0%). SELECT NOM, Prenom FROM Personne P, Cours C WHERE P.Id_Personne = C.Id_Enseignant;

4.2. EVALUATION D UNE REQUÊTE CHAPITRE 4. JOINTURES

5 Optimisation et EXPLAIN Informations sur la Base de Données Pagedisque : 8ko Tailled un ROWID:10o PCTFree : 10% (page utile 7 372o) M =11 Clustering Factor,par défaut : dense (φ = R ),non-dense (φ = R ) Schéma de la base : Table Attributs Taille Nb tuples Nb tuples/pages Cours (Id_Cours, Id_Enseignant, Intitule) 20 pages 2 200 112 Personne (Id_Personne, Nom, Prenom, Annee_Naissance) 2 000 pages 124 000 62 Salle (Id_Salle, Localisation, Capacite) 5 pages 500 112 Reservation (Id_Salle, Id_Cours, Date, heure_debut, heure_fin) 2 000 pages 570 000 285 5.1 Optimisation Pour les requêtes suivantes, proposer un algorithme de jointure optimisé. Vous utiliserez les indexes et les organisations physiques ci-dessous. Donner le plan EXPLAIN correspondant. 1. BTree: Index Hauteur ordre Type Cours.Id_Cours 2 291 dense unique Cours.Intitule 2 68 dense Personne.Id_Personne 3 291 dense unique Salle.Id_Salle 2 291 dense unique Salle.Capacite 2 291 dense Reservation.PK 2 136 non-dense unique 2. Bitmap: Index Taille vecteur Nb vecteurs Personne.Annee 3 20 1. Seulement 10 cours contiennent bases de données. SELECT Nom, Prenom FROM Personne P,Cours C WHERE P.Id_Personne = C.Id_Enseignant AND Intitule like Base de Données% ; 2. SELECTCOUNT( ) FROM Personne P,Cours C WHERE P.Id_Personne = C.Id_Enseignant AND Intitule like Base de Données% ; 3. 2,941% sont nés en 1979. SELECTCOUNT( )

5.2. EXPLAIN CHAPITRE 5. OPTIMISATION ET EXPLAIN FROM Personne P,Cours C WHERE P.Id_Personne = C.Id_Enseignant AND Annee=1979AND intitule like Base de Données% ; 4. Il n y a qu une seule salle 35.3.26 et 0,14% des réservations sont dans cette salle. SELECT Date, heure_debut, heure_fin FROM Reservation R,SalleS, Cours C WHERE R.Id_Cours = C.Id_Cours AND R.Id_Salle = S.Id_Salle AND S.Localisation = 35.3.26 AND intitule like Base de Données% ; 5.2 EXPLAIN Donner la requête SQL correspondante et son coût d exécution pour chacun des plans EXPLAIN suivants : 1. 0,07% des réservations sont dans la salle 426, et 2% de celles-ci se passent le 2012-10-05. 0 SELECT STATEMENT 1 NESTED LOOPS 2 INDEXRANGESCAN Reservation 3 TABLE ACCESS BY ROWID Cours 4 AND EQUAL 5 INDEXRANGESCAN PK_Cours 6 INDEXRANGESCAN Cours_Intitule (2)ID_Salle=426 ANDDate = 2012 10 05 (5) R.ID_Cours = C.Id_Cours (6) Intitule like Base de données% 2. 0,07% des réservations sont dans la salle 426, et 2% de celles-ci se passent le 2012-10-05. 0 SELECT STATEMENT 1 SORTUNIQUE 2 SORTJOIN 3 MERGE JOIN 4 INDEXRANGESCAN Reservation 5 MERGE JOIN 6 TABLE ACCESS BY ROWID Cours 7 INDEXRANGESCAN Cours_Intitule (1) DISTINCT (Id_Cours) (2) R.ID_Cours = C.Id_Cours (4)ID_Salle=426 ANDDate = 2012 10 05 (7) Intitule like Base de données%

6 Choix de stockage Informations sur la Base de Données Pagedisque : 8ko Tailled un ROWID:10o PCTFree : 10% (page utile 7 372o) M =11 Clustering Factor,par défaut : dense (φ = R ),non-dense (φ = R ) Schéma de la base : Table Attributs Taille Nb tuples Nb tuples/pages Cours (Id_Cours, Id_Enseignant, Intitule) 20 pages 2 200 112 Personne (Id_Personne, Nom, Prenom, Annee_Naissance) 2 000 pages 124 000 62 Salle (Id_Salle, Localisation, Capacite) 5 pages 500 112 Reservation (Id_Salle, Id_Cours, Date, heure_debut, heure_fin) 2 000 pages 570 000 285 6.1 Choix de schéma 1. L attribut Localisation n est pas stocké de manière optimal. En effet, il est composé d un numéro d accès, d un numéro d étage et d un numéro de porte. Proposer un meilleur stockage pour la table Salle. 2. Donner le nouveau schéma et la taille de la nouvelle table. 6.2 Oracle Soit la requête de création de tablespace suivant : CREATE TABLESPACE tabspace2 DATAFILE diskc:tabspacefile.dat SIZE 2G DEFAULT STORAGE( INITIAL 40K NEXT 800K NEXT 1600K MINEXTENTS 1 MAXEXTENTS 999 PCTINCREASE 50 PCTFREE 90 PCTUSED 70 ) 1. Donner un tableau qui donne le nombre de pages contigües pour chaque extension (jusqu à la 6 ) 2. Donner le nombre d extensions pour chacune des tables 3. Compte tenu du schéma de la table Réservation, comment pourrait-on améliorer son stockage? Donner la requête de création de table, en tenant compte de l index non-dense. 4. Donner la nouvelle taille de la table Reservation et le nombre d extension à partir de votre requête de création. On gardera 192o dans une page pour les méta informations (malgré un PCT- Free de 0)

6.3. DB2 CHAPITRE 6. CHOIX DE STOCKAGE 6.3 DB2 1. On souhaite utiliser les possibilités de compression sous DB2 pour la table Personne. Donner la requête DB2 permettant d estimer la place éconimisée 2. Avec un PCTFREE de 0% (192o pourles méta informations) et une moyennedecompression de 50% par tuple, donner la taille estimer en nombrede pagespour la table Personne. 3. Donner la requête de création de table compressée. 6.4 SQL Server 1. Aprèsanalyse des requêtes soumises ausgbd,on se rendcompteque la requête typeest : SELECT Localisation FROM Salle S, Reservation R WHERE Date = 2012 10 05 ; Les index présents sur la table Reservation sont inutiles pour cette requête. Dire pourquoi. 2. Proposer la création d un index pour améliorer cette requête 3. Donner la requête de création de table sous SQL server pour créer un index non-dense sur l attribut Date de Reservation

7 Tuning de requêtes Informations sur la Base de Données Pagedisque : 8ko Tailled un ROWID:10o PCTFree : 10% (page utile 7 372o) M =11 Clustering Factor,par défaut : dense (φ = R ),non-dense (φ = R ) Schéma de la base : Table Attributs Taille Nb tuples Nb tuples/pages Cours (Id_Cours, Id_Enseignant, Intitule) 20 pages 2 200 112 Personne (Id_Personne, Nom, Prenom, Annee_Naissance) 2 000 pages 124 000 62 Salle (Id_Salle, Localisation, Capacite) 5 pages 500 112 Reservation (Id_Salle, Id_Cours, Date, heure_debut, heure_fin) 2 000 pages 570 000 285 7.1 Amélioration de requêtes Pour chacunes des requêtes suivantes, trouver l erreur et proposer une nouvelle requête plus optimisée. 1. SELECTNB FROM ( SELECTId_Salle, COUNT( ) ASNB FROM Reservation GROUPBY Id_Salle)R,SalleS WHERE R.Id_Salle = S.Id_Salle AND Localisation = 35.3.26 2. SELECTId_Salle, Localisation, Capacite,COUNT( ) FROM Salle S, Reservation R WHERE R.Id_Salle = S.Id_Salle GROUP BY Id_Salle, Localisation, Capacite 3. SELECT FROM Personne WHERE Annee like %79 ; 7.2 Indexation de fonction 1. Dans le chapitre précédent(6.1), nous avions changé le schéma de la table Salle(Id_Cours, Acces, Etage, Porte, Capacite). Toutefois, on souhaiterait continuer à faire des recherches de type Localisation = 35.3.26 (ou équivalent). Proposer une solution. 2. Il est également possible d utiliser le Pipeline pour générer cet accès en prenant la localisation en entrée de la procédure pipeliné. Proposer une implémentation PL/SQL avec pipeline pour intégrer la décomposition de la localisation.

7.3. VUE MATÉRIALISÉE CHAPITRE 7. TUNING DE REQUÊTES 7.3 Vue matérialisée Lecalcul de la requête suivante est tropcouteux et effectué régulièrement sur la base dedonnées : SELECT Intitule, Acces, Etage, Porte, Date, Heure_debut, Heure_fin FROM Cours C,SalleS, Reservation R WHERE C.Id_Cours = R.Id_Cours AND R.Id_Salle = S.Id_Salle AND C.Id_Cours = XXX ; Le paramètrexxxest changéàchaque foisen fonction du coursdemandé. 1. Comme solution, nous proposons de tout sauvegarder dans une vue matérialisée. Donner la requête de création de la vue Planning. 2. Quel est le oules attributs qui devront êtreindexé? 3. Donner la taille prise par les données de cette vue. (PCTFREE=0, métainfo 192o) 4. Quel est le coût d exécution de la requête suivante : SELECT Concat(Acces,.,Etage,.,Porte), Date, Heure_debut, Heure_fin FROM Planing WHERE Id_Cours = 25; 7.4 HINT Les requêtes suivantes ne produisent pas le plan d exécution attendu. Utiliser des HINTs qui permettraient de leur donner la bonne orientation. 1. L index BTree_Capacite n est pas utilisé car les statistiques ne sont pas à jour : SELECT Date, Heure_debut, Heure_fin FROM Salle S, Reservation R WHERE S.Id_Salle = R.Id_Salle AND Capacite > 200 2. L index bitmap_annee est utilisée alors qu il génère un trop grand nombre de pointeurs : SELECT Intitule FROM Cours C, Personne P WHERE P.Id_Personne = C.Id_Enseignant AND ANNEE_Naissance = 1960; 3. Sur la requête précédente, on souhaiterait en plus forcer l utilisation d une jointure par boucle imbriquée avec index et également qu elle soit dirigée par la table Cours (en effet, un JoinHash est généré mais ne tient pas en mémoire à cause d une mauvaise répartition)