Vous êtes sur la page 1sur 3

A. U.

: 2022-2023

TP Modélisation des Bases de Données Relationnelle


S5 LP: DSIC

Démarrage
1. Assurez-vous que votre fichier environnement de travail (.bashrc) contient bien l’environnement
nécessaire pour l’exécution d’oracle.
2. Lancez l’interface sqlplus d’oracle.
3. Identifiez-vous avec Login&MotdePasse (fourni lors du TP) sqlplus ensuite votre login ensuite votre mot
de passe
ou
sqlplus mon_login/mon_motdepasse
1 Préparation
On supposera que la base Cinéma est créé et que les données y sont insérées. Si ce n’est pas le cas, créez la
BD Cinema à l’aide du script BDCinema.sql et insérez des données issues du fichier loadCinemaData.sql dans
les tables de cette base.
2 Analyse des requêtes
2.1 Plan d’exécution et trace
La commande set autotrace traceonly active le mode trace et permet obtenir le temps d’exécution, le plan
d’exécution et les statistiques sur la requête exécutée, sans afficher le résultat de la requête.
La commande set autotrace on explain est similaire à la précédente mais permet d’afficher le résultat de la
requête.
La commande set autotrace off désactive le mode trace.
Ainsi par exemple, pour la requête
SELECT ∗ FROM PERSON WHERE lastname LIKE ’L%’ ;
On obtient la sortie suivante :

DSIC S 3
2.2 Utilisation de l’optimiseur
Il est possible de changer la configuration de l’optimiseur Oracle à l’aide de la requête suivante pour la
session courante :

2.3 Temps d’exécution des requêtes


Pour connaître le temps d’exécution des requêtes, il est nécessaire d’exécuter la commande SET TIMING ON.
Le temps est donné en seconde. Par exemple,

3 Analyse et comparaison des plans d’exécution


Dans cette partie du TP, on utilisera les requêtes suivantes :
1. Obtenir le titre des films dont le genre commence par ’epic’.
2. Obtenir le titre des films dont le genre est inconnu.
3. Obtenir le titre des films durant moins de 130 minutes et dont le budget dépasse 50 millions.
4. Quels sont les titres des films dont le score (en pourcentage) est supérieur à 70 et dont le nombre de
critique est supérieur à 100. Rédigez cette requête de sept façons différentes.
5. Obtenir la liste des films classés par année et par ordre alphabétique.
6. Obtenir le titre, le genre et la durée des films qui durent plus longtemps que n’importe quel film dont le
genre est epic space opera. Rédigez cette requête de deux façons différentes.
7. Obtenir le titre, le genre et la durée des films qui durent plus longtemps qu’au moins un film dont le genre
est epic space opera. Rédigez cette requête de deux façons différentes.
8. Obtenir le titre des films qui ne sont joués dans aucun cinéma de la compagnie MK2.
Rédigez cette requête de quatre façons différentes.
3.1 Plans d’exécution
1. Affichez le plan d’exécution de chacune de ces requêtes en utilisant l’optimiseur statistique (par défaut)
2. Etudiez chaque plan d’exécution et comparez les plans d’exécution des requêtes pouvant être réalisées
de plusieurs manières. Vous vous aiderez de la documentation.
3. Affichez le plan d’exécution de chacune de ces requêtes en utilisant l’optimiseur syntaxique.

GI S1
4. Etudiez chaque plan d’exécution et comparez les plans d’exécution des requêtes pouvant être réalisées
de plusieurs manières.
5. Comparez également les plans d’exécution obtenus avec l’optimiseur statistique et l’optimiseur
syntaxique
3.2 Utilisation d’index
Repassez en optimiseur statistique et configurez la session pour un affichage du plan d’exécution et des
statistiques des requêtes.
La vue v$object_usage montre l’usage des index lors de la dernière requête exécutée. Cette vue est modifiée
dynamique lors le mode monitoring est activé sur l’index grâce à la requête suivante :
Alter index idxtitlemovie monitoring usage ;
La requête suivante désactive ce mode :
Alter index idxtitlemovie nomonitoring usage ;
1. Ajoutez un index IDXLASTNAMEPERSON sur l’attribut LASTNAME de la table PERSON.
Pour la requête suivante, activez le mode monitoring, comparez les plans d’exécution et les statistiques
avant et après introduction de l’index, et consultez également la vue
$object_usage. Qu’observez vous ?
SELECT ∗ FROM PERSON WHERE lastname LIKE ’L%’ ;
2. Ajoutez un index IDXTITLEMOVIE sur l’attribut TITLE de la table MOVIE.
3. Ajoutez un index IDXGENDERMOVIE sur l’attribut GENDER de la table MOVIE.
Exécutez les requêtes 1 et 2. Comparez les plans d’exécution et les statistiques avant et après introduction
de l’index. Qu’observez-vous ?
4. Même question avec un index BITMAP.
5. Ajoutez un index composite IDXTITLEGENDERMOVIE sur les attributs TITLE et GENDER de la table MOVIE.
 Sans supprimer l’index IDXGENDERMOVIE, exécutez les requêtes 1 (testez la requête en utilisant ou
non la fonction UPPER sur la colonne GENDER) et 2. Comparez les plans d’exécution et les statistiques
avant et après introduction de l’index. Qu’observez vous ?
 Modifiez la requête 1 afin de sélectionner les films dont le titre commence par S et le genre par epic.
Exécutez la nouvelle requête et comparez les plans d’exécution et les statistiques avant et après
introduction de l’index et avec les résultats précédents.
Qu’observez vous ?

Vous pouvez également comparer les résultats lors de l’utilisation de l’optimiseur syntaxique.

GI S1

Vous aimerez peut-être aussi