L’optimiseur ORACLE L’optimiseur ORACLE suit une approche classique: Génération de plusieurs plans d’exécution. Estimation du coût de chaque plan généré.

Slides:



Advertisements
Présentations similaires
Optimisation SQL Server
Advertisements

26/ 04/ 2007 Auto-Jointure : SELECT * FROM Nom_relation R1 INNER JOIN Nom_relation R2 ON Condition_de_jointure; Problèmes Si des attributs de même nom.
Optimisation des requêtes
Langage de manipulation de données Ensemble de commandes permettant : – modifier la base : ajout, modification et suppression – interroger la base ex :
Évaluation des requêtes relationnelles
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 4 : Stockage des données, Tables dans SQL Server Bertrand Audras.
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 5 : Accès aux données Bertrand Audras Microsoft Technology Center.
Bureautique Excel-VBA et Access – Cours 2 Dominante Économie et Gestion dEntreprise AgroParisTech Année Liliana IBANESCU et Laurent ORSEAU UFR.
Data Management for Large-Scale Scientific Computations in High Performance Distributed Systems A. Choudhary, M. Kandemir, J. NoG. Memik, X. Shen, W. Liao,
Évaluation des requêtes relationnelles
Witold Litwin Structures physiques Witold Litwin
Optimisation algébrique de requêtes relationnelles
Techniques dindexation Implémentation du modèle relationnel ~ LIF10: Fondements des bases de données relationnelles.
Les requêtes Manière de dialoguer avec une base de donnée pour :
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
Optimisation de Requêtes
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Optimisation de Requêtes
Les Requêtes S.Q.L « Structured Query Language)
To Tune or not to Tune? To Tune or not to Tune? A Lightweight Physical Design Alerter Costa Jean-Denis Le Yaouanc Aurélie Mécanismes de SGBD 2007.
SQL Server 2005 Tuning / Optimisation
Le Langage d’Interrogation de Données LID Multi-table Jointures
L’utilisation des bases de données
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Les Webcasts Groupe des Utilisateurs SQL Server Avril 2014 – Statistiques Incrémentales Fred Pichaut – Microsoft Senior.
Les requêtes Les requêtes permettent dinterroger une base de données suivant 3 opérateurs : La projection Affiche le contenu dun champ complet En langage.
Magnets fiche projet / project sheet IAFACTORY THE MAGNETIC FACTORY magnets. IAFACTORY | conseil en architecture de linformation | |
Proc SQL Yan IMA Consultant SAS Conception dOutils Informatiques Inc Hochelaga Montréal, Québec H1W 1K4 Les options cachées.
L’utilisation des bases de données
Algèbre relationnelle et SQL
Cours N°2 Base de Données & Langage SQL
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
NoSQL Typologie et Panorama
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
Mise en œuvre du langage MDX
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
1 Evaluation des Operations Relationnelles Chapitre 14, Section 14.4.
1 Évaluation des Requêtes: Survol Chapitre Objectifs Catalogue Préliminaires: Techniques de base pour traiter des requêtes Chemin daccès Correspondance.
Optimisation des Requêtes Relationnelles
1 Évaluation des Requêtes: Survol Chapitre Objectifs Catalogue Préliminaires: Techniques de base pour traiter des requêtes Chemin daccès Correspondance.
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
1 Evaluation des Operations Relationnelles : Algorithmes Additionnels Chapitre 14, ,
1 Survol du Stockage et de lIndexage Chapitre 8. 2 Objectifs Stockage persistant Organisation des fichiers Fichiers de données Fichiers dindexes Operations.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Évaluation des Requêtes: Survol Chapitre 12.
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
Manipulation des données Requêtes simples
2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France.
OPTIMISATION DE BASE DE DONNEES ORACLE
Algèbre Relationnelle : Implémentation
Mise en œuvre du langage MDX
Traduction des opérations sous MySQL
Optimisation de requêtes
1 G. Gardarin Optimisation de Requêtes  1. Introduction  2. Arbres relationnels  3. Restructuration algébrique  4. Modèle de coût  5. Choix du meilleur.
OPTIMISATION Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
Sélection de colonnes (la projection)
22/04/2015© Robert Godin. Tous droits réservés.1 10 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en.
B.Shishedjiev - Modèle relationnel
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
1 Survol du Stockage et de l’Indexage Chapitre 8.
Structures de données avancées : Principales structures de fichiers
Les bases de données Séance 8 Jointures.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Matière Sélectionnée: Triage Externe, Join à Hachage, … Chapitres 13—15: 13.1—13.5, 14.4,
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Traitement et optimisation de requêtes
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Langage de manipulation de données (LMD)
SQL LID – INTERROGATIN DES DONNEES
Transcription de la présentation:

L’optimiseur ORACLE L’optimiseur ORACLE suit une approche classique: Génération de plusieurs plans d’exé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 d’influer, voire de forcer le plan d’exécution.

Estimation du coût d’un plan d’exécution Beaucoup de paramètres entrent dans l’estimation du coût : Les chemins d’accè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 à l’outil ANALYSE. Les ressources disponibles.

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) ... ... 15 Balayage complet de la table

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.

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

Les chemins d’accè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 d’index (INDEX SCAN).

D’autres opérations sont liées aux algorithmes de jointures. 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 l’algèbre relationnelle. D’autres opérations sont liées aux algorithmes de jointures.

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

L’outil TRACE L’outil TRACE donne le plan d’exécution et les coûts d’exécution d’une requête. set timing on set autotrace trace La description comprend : Le chemin d’accès utilisé. Les opérations physiques (tri, fusion, intersection, ...). L’ordre des opérations. Il est représentable par un arbre.

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

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 ---------------------------------------------------------- 0 SELECT STATEMENT 1 TABLE ACCESS FULL AUTOS ---------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("MODEL"='Gobi')

Sélection sans index set timing on set autotrace trace select * from autos where model = 'Gobi' ; 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): --------------------------------------------------- 1 - filter("MODEL"='Gobi')

Plan d’exécution PROJECTION PARCOURS SEQUENTIEL AUTOS

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): --------------------------------------------------- 2 - access("ID_DEALER"='dealer1')

Plan d’exécution PROJECTION ACCES DIRECT TRAVERSÉE INDEX Dealers

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): --------------------------------------------------- 4 - access("SERIAL"="SERIALNO")

Plan d’exécution PROJECTION BOUCLE IMBRIQUEE PARCOURS INDEX ACCES DIRECT Index Sales Recherche Par Clé serial=serialNo Autos Index Autos

Jointure sans index On force ici l’optimiseur à ne pas utiliser l’index 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 |

Plan d’exécution PROJECTION BOUCLE IMBRIQUEE PARCOURS SEQUENTIEL ACCES DIRECT Sales Recherche Par Clé serial=serialNo Autos IndexAutos

Jointure sans index On force ici l’optimiseur à 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 |

Plan d’exécution PROJECTION Hash Join PARCOURS SEQUENTIEL Sales Autos