Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Optimisation des requete sous Oracle

No description
by

Yassine Beldi

on 15 November 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Optimisation des requete sous Oracle

Optimisation des Requêtes sous ORACLE Préparé Par : Yassine BELDI Encadré Par : Mr BENKHALIFA INTRODUCTION PLAN : Approche pour Optimiser Plan d'exécution basé sur la réutilisation des plan d'exécution L’optimisation des requêtes est un volet très important dans le domaine des bases de données.

Elle constitue une étape inévitable dans le processus précédant l’exécution d’une requête.

Elle vise à ordonnancer de façon optimale les actions impliquées dans une requête..


ce problème d’optimisation a intéressé une panoplie de chercheurs depuis plus d’une trentaine d’années.particulièrement depuis que Ibaraki et Kameda . Introduction : William Deming
1990-1993 On ne peut améliorer que ce que l’on mesure . Approche Pour Optimiser : Mesurer : Les principaux critères sont :

le temps de réponse ;

la consommation mémoire ;

la consommation CPU ;

le nombre E/S (entrées/sorties disque). Temps d’exécution est la La mesure synthétique la plus pratique.
C’est un indicateur assez simple d’utilisation et c’est de plus, celui qui est ressenti par l’utilisateur. Il faut cependant exécuter la requête plusieurs fois pour valider cette mesure, car le niveau de charge global du système et d’autres éléments influent sur ce paramètre. La plupart des environnements graphiques de développement affichent systématiquement le temps d’exécution de la dernière requête.

Sous Oracle SQL*Plus, il s’active avec la commande suivante :
set timing on; Le Plan d'exécution Après l’exécution d’une requête lorsque la trace automatique est activée on obtient:
Le nombre de lignes sélectionnées.
Le plan d’exécution contenant les valeurs estimées . Le plan est complet avec quelques statistiques réelles de l’exécution.
les statistiques suivantes : Le plan d’exécution est l’expression par le SGBDR de la méthode d’accès aux données pour répondre à une requête. Le plan d’exécution présente la liste des opérations qui vont être effectuées lors de l’exécution : Opérations d'accès aux tables
Opérations d'accès aux index
Opérations de jointure
Autres opérations Opérations d'accès aux tables Full Table Scan : la table est parcourue entièrement, de façon linéaire, dans l’ordre le plus simple.

Partition : Opération effectuée sur des partitions et non sur la table entière..

Table Access By RowID : accès direct à un enregistrement au sein d’un bloc de données grâce au RowID qui contient l’adresse du bloc et l’offset de la ligne dans le bloc. Cela a généralement lieu après l’accès à un index qui fournit le RowID. Opérations d'accès aux index Unique Scan : Parcourt l’arborescence de l’index pour localiser une clé unique. Typiquement utilise sur une condition du type noclient=37569.

Range Scan : Parcourt une partie d’index de façon ordonnée. Typiquement utilise sur une condition du type noclient between 50000 and 60000.

Full Scan : Parcourt un index en entier en respectant l’ordre de l’index.
Fast Full Scan : Analogue a Full Scan mais ne respecte pas l’ordre des données. Typiquement utilisé lorsqu’une condition peut être appliquée sur un index sans que l’ordre de tri soit mis en jeu. Par exemple: select count(*) from clients where mod(noclient, 1000) = 150.

Skip Scan : Utilise les index multi colonnes sans tenir compte des premières colonnes.Dans ce cas, l’index est considère comme un ensemble de sous-index.
Bitmap: Utilise un index de type bitmap.
Partition: Utilise un index partitionne. Opérations de jointure Autres opérations Nested Loop (boucles imbriquées) : Parcourt les sous-ensembles pour chaque valeur de l’ensemble de données pilotes. Illustrons ce comportement avec la requête suivante :select * from cmd where noclient in (select noclient from clientswhere pays='Cameroun' )

Merge Join : Rapproche deux ensembles de données triés. Le principe est que deux curseurs parcourent linéairement les ensembles tries. Cette solution est performante pour rapprocher deux ensembles déjà tries sur les clés de jointure

Hash Join : Construit une table de hachage permettant d’accéder plus rapidement aux clés.

Outer Join (jointure externe) : Ce sont des variantes des jointures précédentes. Elles suivent le même principe, si ce n’est qu’on sélectionne aussi les lignes qui n’ont pas de correspondance. Union, Intersection, Minus : Effectuent des opérations ensemblistes. C’est généralement explicite dans la requête.

Sort : Effectue un tri.

Sort Agregate : Effectue une opération d’agrégation (SUM, AVG, COUNT, etc.).

Filter : Filtre des données suivant un prédicat (synonyme de condition). Les index B-tree: Comme son nom l'indique l'index b-tree est organisé en arbre, les racines constituées par les valeurs précisées à gauche. En clair, si je crée un index avec (NOM,PRENOM) via la commande create index monIndex on individus(NOM,PRENOM) cela crée un index en arbre avec les personnes classées par nom puis par prenom ... Bitmap: Un mot binaire est créé, composé d'autant de bits que de possibilités de valeurs de l'index, ce type d'index est particulièrement efficace lorsque le nombre de valeurs est petit ainsi que pour les opérations AND et OR. Modélisation des requêtes La modélisation sous forme d’arbres fut abandonnée, car elle s’est avérée trop restrictive.
Les graphes sont largement utilisés pour représenter les requêtes, et sont appelés Query Graph. Les graphes utilisés pour modéliser les requêtes sont construits comme suit :
• Chaque noeud du graphe correspond à une table de la requête.

•Chaque arête (Ni, Ni’), désigne l’existence d’une relation de jointure entre les tables représentées par les noeuds Ni, Ni’. Système Proposé pour le modèle basé sur la réutilisation des plan d'exécution nouvelle requete Construire son graphe non étiqueté Etablir de l’isomorphisme avec les graphes non étiquetés d’anciennes requêtes Faire appel à l’optimiseur classique Sauvegarder le nouveau graphe
dans un nouveau cluster Etiqueter du graphe Etablir de l’isomorphisme avec les graphes non étiquetés d’anciennes requêtes Appliquer le même plan d’exécution
que la requête correspondante Faire appel à l’optimiseur classique Sauvegarder le nouveau graphe
dans le cluster correspandant Les index basés sur des fonctions: là on n'indexe plus un champ mais le résultat d'une opération sur un champ. Par exemple, on crée un index sur UPPER(monChamps) plutôt que sur monChamps. Les indexes Modélisation des requêtes TP et Conclusion Merci Pour Votre Attention BiBliographie : « Optimisation des bases de données (Mise en œuvre sous Oracle) » par Laurent Navarro. Edition Pearson.
« Une approche pour l’optimisation des requêtes dirigée par la réutilisation des plans d’exécution » par Lamia SADEG Et Ladjel BELLATRECHE.
Fundamentals of Database Systems par ELmasri/Navathe, 5th Edition, Chapter 15.
Oracle Database 11g SQL Master SQl and PL/SQL in the oracle database, Jason Price, Oracle Press.
Application :
Full transcript