La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Loptimiseur ORACLE suit une approche classique: Génération de plusieurs plans dexécution. Estimation du coût de chaque plan généré. Choix du meilleur et.

Présentations similaires


Présentation au sujet: "Loptimiseur ORACLE suit une approche classique: Génération de plusieurs plans dexécution. Estimation du coût de chaque plan généré. Choix du meilleur et."— Transcription de la présentation:

1 Loptimiseur ORACLE suit une approche classique: Génération de plusieurs plans dexécution. Estimation du coût de chaque plan généré. Choix du meilleur et exécution. Tout ceci est automatique, mais il est possible dinfluer, voire de forcer le plan dexécution. Loptimiseur ORACLE

2 Estimation du coût dun plan dexécution Beaucoup de paramètres entrent dans lestimation du coût : – Les chemins daccès disponibles. – Les opérations physiques de traitement des – résultats intermédiaires. – Des statistiques sur les tables concernées (taille, sélectivité). Les statistiques sont calculées par appel explicite à loutil ANALYSE. – Les ressources disponibles.

3 Règles Priorité 1 Accès à un enregistrement par ROWID 2 Accès à un enregistrement dans un cluster 3 Accès à un enregistrement dans une table de hachage (hash cluster ) 4 Accès à un enregistrement par clé unique (avec un index) Balayage complet de la table

4 Principaux paramètres OPTIMIZER_MODE (RULE, CHOOSE, FIRST_ROW, ALL_ROWS). SORT_AREA_SIZE (taille de la zone de tri). HASH_AREA_SIZE (taille de la zone de hachage). HASH_JOIN_ENABLED considère les jointures par hachage.

5 Création des statistiques 1.Calcul de la taille et du nombre de lignes : ANALYSE TABLE Autos COMPUTE STATISTICS FOR TABLE 2.Analyse des index : ANALYSE TABLE Autos COMPUTE STATISTICS FOR ALL INDEX 3.Analyse de la distribution des valeurs : ANALYSE TABLE Autos COMPUTE STATISTICS FOR COLUMNS serial, color, model

6 Les chemins daccès Parcours séquentiel (FULL TABLE SCAN). Par adresse (ACCESS BY ROWID). Parcours de regroupement (CLUSTER SCAN). On récupère alors dans une même lecture les n-uplets des 2 tables du cluster. Recherche par hachage (HASH SCAN). Parcours dindex (INDEX SCAN).

7 Opérations physiques INTERSECTION : intersection de deux ensembles de n-uplet. CONCATENATION : union de deux ensembles. FILTER : élimination de n-uplets (sélection). PROJECTION : opération de lalgèbre relationnelle. Dautres opérations sont liées aux algorithmes de jointures.

8 Algorithmes de jointure ORACLE utilise trois algorithmes de jointures : Tri/fusion quand il ny a pas dindex. Opération SORT et MERGE. Jointure par hachage quand il ny a pas dindex. Opération HASH JOIN Boucles imbriquées quand il y a au moins un index. Opération NESTED LOOP.

9 Loutil TRACE Loutil TRACE donne le plan dexécution et les coûts dexécution dune requête. set timing on set autotrace trace La description comprend : – Le chemin daccès utilisé. – Les opérations physiques (tri, fusion, intersection,...). – Lordre des opérations. Il est représentable par un arbre.

10 Optimisation dans ORACLE Autos ( serialNo, model, color) Sales (serial, id_dealer, datesales, price) Dealers (id_dealer, city, departement, phone)

11 Sélection sans index set timing on set autotrace trace select * from autos where model = 'Gobi' ; Ecoulé : 00 :00 :00.05 Plan d'exécution SELECT STATEMENT 1 TABLE ACCESS FULL AUTOS Predicate Information (identified by operation id): filter("MODEL"='Gobi')

12 Sélection sans index Ecoulé : 00 :00 :00.02 Plan d'exécution | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| | 0 | SELECT STATEMENT | | 32 | 544 | 3 (0)| |* 1 | TABLE ACCESS FULL | AUTOS | 32 | 544 | 3 (0)| Predicate Information (identified by operation id): filter("MODEL"='Gobi') set timing on set autotrace trace select * from autos where model = 'Gobi' ;

13 Plan dexécution PROJECTION PARCOURS SEQUENTIEL AUTOS

14 Sélection avec index set timing on set autotrace trace select * from dealers where id_dealer = 'dealer1'; Ecoulé : 00 :00 :00.00 Plan d'exécution | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| | 0 | SELECT STATEMENT | | 1 | 38 | 1 (0)| | 1 | TABLE ACCESS BY INDEX ROWID | DEALERS | 1 | 38 | 1 (0)| |* 2 | INDEX UNIQUE SCAN | PK_DEALERS | 1 | | 0 (0)| Predicate Information (identified by operation id): access("ID_DEALER"='dealer1')

15 Plan dexécution ACCES DIRECT TRAVERSÉE INDEX Index Dealers PROJECTION Dealers

16 Jointure avec index sset timing on sset autotrace trace SSELECT serialNo, model, color FROM Autos A, Sales s WHERE serial = serialNo; Ecoulé : 00 :00 :00.01 Plan d'exécution | Id | Operation | Name | Rows | Bytes | Cost %CPU)| | 0 | SELECT STATEMENT | | 236 | 5428 | 2 (0)| | 1 | NESTED LOOPS | | 236 | 5428 | 2 (0)| | 2 | INDEX FULL SCAN | PK_SALES | 236 | 1416 | 1 (0)| | 3 | TABLE ACCESS BY INDEX ROWID| AUTOS | 1 | 17 | 1 (0)| |* 4 | INDEX UNIQUE SCAN | PK_AUTOS | 1 | | 0 (0)| Predicate Information (identified by operation id): access("SERIAL"="SERIALNO")

17 Plan dexécution ACCES DIRECT Recherche Par Clé serial=serialNo Index Autos PROJECTION Autos PARCOURS INDEX Index Sales BOUCLE IMBRIQUEE

18 Jointure sans index On force ici loptimiseur à ne pas utiliser lindex de sales set timing on set autotrace trace SELECT /*+ NO_INDEX(s) */ serialNo, model, color FROM Autos A, Sales s WHERE serial = serialNo; Ecoulé : 00 :00 :00.04 Plan d'exécution | Id | Operation | Name | Rows| Bytes | Cost | | 0 | SELECT STATEMENT | | 236 | 5428 | 4 | | 1 | NESTED LOOPS | | 236 | 5428 | 4 | | 2 | TABLE ACCESS FULL | SALES | 236 | 1416 | 3 | | 3 | TABLE ACCESS BY INDEX ROWID | AUTOS | 1 | 17 | 1 | | 4 | INDEX UNIQUE SCAN | PK_AUTOS | 1 | | 0 |

19 Plan dexécution ACCES DIRECT Recherche Par Clé serial=serialNo IndexAutos PROJECTION Autos PARCOURS SEQUENTIEL Sales BOUCLE IMBRIQUEE

20 Jointure sans index On force ici loptimiseur à ne pas utiliser les index set timing on set autotrace trace SELECT /*+ NO_INDEX(s) NO_INDEX(A)*/ serialNo, model, color FROM Autos A, Sales s WHERE serial = serialNo; Ecoulé : 00 :00 :00.02 Plan d'exécution | Id | Operation | Name | Rows | Bytes | Cost | | 0 | SELECT STATEMENT | | 236 | 5428 | 7 | | 1 | HASH JOIN | | 236 | 5428 | 7 | | 2 | TABLE ACCESS FULL| AUTOS | 236 | 4012 | 3 | | 3 | TABLE ACCESS FULL| SALES | 236 | 1416 | 3 |

21 Plan dexécution PARCOURS SEQUENTIEL PROJECTION Autos PARCOURS SEQUENTIEL Sales Hash Join


Télécharger ppt "Loptimiseur ORACLE suit une approche classique: Génération de plusieurs plans dexécution. Estimation du coût de chaque plan généré. Choix du meilleur et."

Présentations similaires


Annonces Google