Exam2014 s1-1 1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 1

Master M1 - Administration et Tuning de BD (ATBD) - Examen

Stéphane Lopes
Durée : 2h - Documents autorisés

Exercice 1 (Questions de cours)


Répondez de manière précise et concise aux questions suivantes :
1. Doit-on placer les index secondaires sur le même disque que les données? Pourquoi?
2. Quand dit-on qu’un index couvre une requête? Donner un exemple.
3. Donnez la définition d’index secondaire et d’index éparse et expliquez pourquoi un index secondaire est
toujours dense.
4. Quel type d’index est le plus performant pour une requête de type point? Expliquez.
5. Quelles tâches de maintenance doit-on réaliser afin d’assurer un bon fonctionnement de l’optimiseur de
requêtes?
Exercice 2 (Sélection d’index)
Dans cet exercice, vous justifierez chacune de vos réponses. Soit le schéma suivant (les clés des relations
sont soulignées, les clés étrangères sont en italiques) : Clients(idC, nomC, prenomC, villeC, commentC),
Commandes(idCo, clientCo, dateCo, prixCo, detailCo).
La taille en octet des différents attributs est la suivante : idC 8, nomC 50, prenomC 50, villeC 50,
commentC 42, idCo 8, clientCo 8, dateCo 8, prixCo 8, detailCo 68.
La table Commandes comporte 1 000 000 tuples, la table Client en comporte 100 000. La taille d’une page
est de 1000 octets.
Quand aucune précision n’est donnée, les valeurs d’un attribut sont uniformément distribuées. L’attribut
villeC possède 5 valeurs distinctes (Paris, Lyon, Marseille, Bordeaux, Clermont-Ferrand). Les valeurs
de l’attribut prixCo sont comprises entre 1 et 1000. L’attribut dateCo possède 10 000 valeurs distinctes.
L’ensemble d’attributs nomC, prenomC est une clé candidate de Client.
1. Statistiques sur les tables
(a) combien de pages occupent chacune des deux tables?
(b) quelle commande Oracle permet de calculer les statistiques pour les attributs de la table Clients?
(c) combien de tuples de la table Clients ont la valeur Clermont-Ferrand pour l’attribut villeCo?
(d) si on suppose que les données de la table Clients sont triées selon l’attribut villeCo, combien de
pages occupent les tuples de la question précédente?
2. Combien de pages seront lues pour répondre à cette requête :
SELECT * FROM Commandes WHERE prixCo < 600
(a) sans index ?
(b) avec un index primaire (arbre B+ de hauteur 15) sur prixCo ?
(c) avec un index secondaire (arbre B+ de hauteur 15) sur prixCo ?
(d) avec un index secondaire (table de hashage) sur prixCo ?
3. Quels index (attributs, type B+ ou hashage, primaire ou secondaire) peut-on créer pour améliorer
l’exécution des requêtes suivantes ? Chaque requête sera traitée indépendamment des autres.
(a) SELECT * FROM Clients WHERE idC = 345
(b) SELECT * FROM Commandes WHERE prixCo * 6.55957 = 8000
(c) SELECT count(*) FROM Clients WHERE villeC = ’Clermont-Ferrand’
(d) SELECT * FROM Clients WHERE villeC = ’Clermont-Ferrand’
(e) SELECT * FROM Commandes WHERE prixCo BETWEEN 100 AND 700
(f) SELECT * FROM Commandes WHERE dateCo = ’10/10/2013’ AND clientCo = 34
(g) SELECT dateCo, prixCo, detailCo FROM Commandes INNER JOIN Clients ON clientCo = idC WHERE
nomC = ’SKYWALKER’ AND prenomC = ’LUKE’
Pour cette dernière requête, en plus de la sélection d’index, vous donnerez : un plan d’exécution
pertinent avec index, et les ordres SQL pour la création des index appropriés sous Oracle.
4. Donnez les index finalement sélectionnés pour chaque table si on considère les requêtes précédentes en-
sembles. Discutez les choix éventuels.

Vous aimerez peut-être aussi