OPTIMISATION DE BASE DE DONNEES ORACLE

Slides:



Advertisements
Présentations similaires
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é.
Advertisements

Bases de Données Avancées: Bases de Données Relationnelles
Initiation aux bases de données et à la programmation événementielle
T ECHNOLOGIES O RACLE Création et gestion des objets © sebvita.com.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Mise en Forme des Résultats avec SQL*Plus
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Contrôles d'accès aux données
L’utilisation des bases de données
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Initiation aux bases de données et à la programmation événementielle
T ECHNOLOGIES O RACLE Manipulation des données © sebvita.com.
Copyright Oracle Corporation, Tous droits réservés. 9 Écriture de Sous- Interrogations Synchronisées.
Les fonctions de groupes Gestion des transactions
Bases de données et SGBD relationnels
L’utilisation des bases de données
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
SQL: Contraintes et Triggers
Création de bases de données
Management of Information Technology - e-business
1 CSI 2532 Lab3 6 Février 2012 Programmation avancée SQL.
2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Les transactions.
Procédures Stockées Schedule: Timing Topic 60 minutes Lecture
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Limiter et trier des données
Introduction.
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Gérer la sécurité des mots de passe et les ressources
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Les Composants de l’architecture Oracle
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Copyright  Oracle Corporation, All rights reserved. 19 Gestion des Privilèges.
(Ou groupes d ’utilisateurs)
Manipulation des Données
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Sous-Interrogations.
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
Sélection de colonnes (la projection)
Structure de stockage et relations
Gérer les rôles.
Les Contraintes.
Gérer les utilisateurs
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
BASES DE DONNÉES RELATIONNELLES
Révision du langage PL/SQL
Afficher des Données Issues de Plusieurs Tables
Copyright  Oracle Corporation, Tous droits réservés. 2 Sélection et Tri des Lignes Retournées par un SELECT.
Création et Gestion de Tables
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Les vues Une vue: c’est une relation virtuelle. Définie par:
13 Copyright © Oracle Corporation, Tous droits réservés. Gérer l'intégrité des données.
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Le langage SQL. Voir polycopié: Introduction à SQL SQL.
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Copyright  Oracle Corporation, Tous droits réservés. 11 Extraction Hiérarchique.
Les bases de données Séance 8 Jointures.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
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.
Cours n°2 Implémentation et exploitation
Introduction au langage PL/SQL
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
CONCEPTS BD - Synthèse journée 1 :
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

OPTIMISATION DE BASE DE DONNEES ORACLE AHLOULLAY ABDELKADER

SOMMAIRE INTRODUCTION CONCEPTION DE L’APPLICATION UTILISATION DE LA MEMOIRE STOCKAGE DES DONNEES REQUÊTES SQL

INTRODUCTION L’optimisation concerne toutes les applications de base de données. La plupart des problèmes de performances ne sont pas des symptômes isolés mais résultent plutôt de la conception de système.

CONCEPTION DE L’APPLICATION CONCEPTION EFFICACE DES TABLES DISTRIBUTION DES EXIGENCES PROCESSEUR La charge processeur devrait être planifiée Exploitez la possibilité de transférer la charge processeur d’un serveur vers un autre Pour limiter les risques de verrouillage et de rollback, ainsi que les conflits de demande de ressources processeur.

UTILISATION DE LA MEMOIRE DEFINITION DE LA TAILLE DE LA SGA - SHARED_POOL_SIZE Taille du pool partagé. - DB_BLOCK_SIZE Taille de bloc de base de données. - DB_CACHE_SIZE La taille du Cache de tampons. Hit ratio : est une mesure de la qualité de gestion des requêtes de données par le cache de tampons.

STOCKAGE DES DONNEES La façon dont la base stocke les données a également un impact sur les performances de requêtes. Pour améliorer les performances d’ E/S, Une solution RAID permet de distribuer les données d’un même fichier sur plusieurs disques. Évaluation de l’utilisation des index Tablespaces gérés localement. Pour éviter la plupart des problèmes de fragmentation de l’espace.

REQUÊTES SQL Une application bien conçue peut se heurter à des problèmes de performances si les instructions SQL qu’elle utilise sont mal construites. La clé dans l’optimisation SQL est réduire au minimum le chemin de recherche que la base utilise pour localiser les données Dans une base de données relationnelle, l’emplacement physique des données n’est pas aussi important que leur place logique dans la conception de l’application.

Génération de plan d’exécution La commande explain plan détermine le chemin d’accès que la base de données utilisera pour satisfaire à une requête. Cette instruction évalue le chemin d ‘exécution d’une requête et palace les résultants de son évaluation dans une table nommée PLAN_TABLE

Syntaxe de EXPLAIN PLAN EXPLAIN PLAN [SET statement_id=id] [INTO table_name] FOR sql_statement La première ligne de cette commande indique à la base de données qu’elle va expliquer le plan d’exécution pour la requête sans réellement l’exécuter. La deuxième ligne marque les enregistrements relatifs à cette requête dans la table PLAN_TABLE avec une valeur id dans la colonne Statement_Id. La requête à analyser suit le mot clé for

Interrogez la table PLAN_TABLE au moyen de la requête suivante. DEF id=id_of_explan_plan SELECT LPAD(' ', 2*(level-1)) || level ||'.'|| NVL(position,0) ||' '|| operation ||' '|| options ||' '|| object_name ||' '|| object_type ||' '|| DECODE(id, 0, ' id = '||statement_id||' Cost = '||Position) "Query Plan" FROM plan_table START WITH id = 0 AND statement_id = '&id' CONNECT BY prior id = parent_id AND statement_id = '&id' /

Schéma de la base CREATE TABLE DEPT ( DEPTNO NUMBER(2) NOT NULL,   CREATE TABLE DEPT ( DEPTNO NUMBER(2) NOT NULL, DNAME VARCHAR2(14) NULL, LOC VARCHAR2(13) NULL ) ALTER TABLE DEPT ADD CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO) CREATE TABLE EMP EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10) NULL, JOB VARCHAR2(9) NULL, MGR NUMBER(4) NULL, HIREDATE DATE NULL, SAL NUMBER(7,2) NULL, COMM NUMBER(7,2) NULL, DEPTNO NUMBER(2) NULL, CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES SCOTT.DEPT (DEPTNO) ALTER TABLE EMP ADD CONSTRAINT PK_EMP PRIMARY KEY (EMPNO) CREATE INDEX I_DEPTNO ON EMP(DEPTNO) CREATE INDEX IN_IOB ON EMP (JOB)

Full Table Scan EXPLAIN PLAN SET Statement_Id = ‘TEST’ FOR select * from emp    2 SELECT STATEMENT 1 TABLE ACCESS (FULL), EMP   1- Cette opération extrait toutes les lignes de la table EMP en utilisant un balayage de table complet. 2- Cette étape du plan définit cette instruction comme instruction SELECT

Single Row by Rowid SELECT * FROM emp   SELECT * FROM emp WHERE ROWID = 'AAAA7bAA5AAAA1UAAA'; 2 SELECT STATEMENT 1 TABLE ACCESS (BY USER ROWID), EMP 1 Cette opération extrait une ligne de la table EMP sur la base de son ROWID.1 2 Cette étape du plan définit cette instruction comme instruction SELECT. 1

Single Row by Unique or Primary Key   SELECT * FROM emp WHERE empno = 7900; 3 SELECT STATEMENT 2 TABLE ACCESS (BY INDEX ROWID), EMP 1 INDEX (RANGE SCAN), PK_EMP 1 Cette opération extrait plusieurs ROWID en balayant l'index PK_EMP (par ordre croissant des clés). 2 Cette opération extrait une ligne de la table EMP sur la base de son ROWID. 3 Cette étape du plan définit cette instruction comme instruction SELECT.

WHERE emp.deptno = dept.deptno; Clustered Join   SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno; 5 SELECT STATEMENT 4 NESTED LOOPS 1 TABLE ACCESS (FULL), EMP (SCOTT) 3 TABLE ACCESS (BY INDEX ROWID), DEPT (SCOTT) 2 INDEX (UNIQUE SCAN), PK_DEPT (SCOTT) 1- Cette opération extrait toutes les lignes de la table EMP en utilisant un balayage de table complet. 2- Cette opération extrait un ROWID unique via une consultation d'index de PK_DEPT 3- Cette opération extrait une ligne de la table DEPT sur la base de son ROWID. 4- Cette opération compare chaque ligne de la première source de lignes enfant avec toutes les lignes de la seconde, en joignant les paires de lignes répondant à la condition définie. 5- Cette étape du plan définit cette instruction comme instruction SELECT.

Single Row by Cluster Join   SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno AND emp.empno = 7900; 6 SELECT STATEMENT 5 NESTED LOOPS 2 TABLE ACCESS (BY INDEX ROWID), EMP 1 INDEX (RANGE SCAN), PK_EMP 4 TABLE ACCESS (BY INDEX ROWID), DEPT 3 INDEX (UNIQUE SCAN), PK_DEPT    1 Cette opération extrait plusieurs ROWID en balayant l'index PK_EMP (par ordre croissant des clés). 2 Cette opération extrait une ligne de la table EMP sur la base de son ROWID. 3 Cette opération extrait un ROWID unique via une consultation d'index de PK_DEPT. 4 Cette opération extrait une ligne de la table DEPT sur la base de son ROWID. 5 Cette opération compare chaque ligne de la première source de lignes enfant avec toutes les lignes de la seconde, en joignant les paires de lignes répondant à la condition définie 6 Cette étape du plan définit cette instruction comme instruction SELECT.

ORDER BY on Indexed Column   SELECT * FROM emp ORDER BY empno; 3 SELECT STATEMENT 2 SORT (ORDER BY) 1 TABLE ACCESS (FULL), EMP 1 Cette opération extrait toutes les lignes de la table EMP en utilisant un balayage de table complet. 2 Cette opération renvoie sa source de lignes enfant triée sur la base des colonnes d'après la clause ORDER BY. 3 Cette étape du plan définit cette instruction comme instruction SELECT

SELECT * FROM emp WHERE job = 'CLERK' OR deptno = 10;   6 SELECT STATEMENT 5 CONCATENATION 2 TABLE ACCESS (BY INDEX ROWID), EMP 1 INDEX (RANGE SCAN), I_DEPTNO 4 TABLE ACCESS (BY INDEX ROWID), EMP 3 INDEX (RANGE SCAN), IN_IOB 1 Cette opération extrait plusieurs ROWID en balayant l'index I_DEPTNO (par ordre croissant des clés). 2 Cette opération extrait une ligne de la table EMP sur la base de son ROWID. 3 Cette opération extrait plusieurs ROWID en balayant l'index IN_IOB (par ordre croissant des clés). 4 Cette opération extrait une ligne de la table EMP sur la base de son ROWID. 5 Cette opération effectue l'union non distincte de ses sources de lignes enfant. 6 Cette étape du plan définit cette instruction comme instruction SELECT.

SELECT * FROM emp WHERE job = 'CLERK' UNION ALL SELECT * FROM emp WHERE deptno = 10 AND job <> 'CLERK'; 6 SELECT STATEMENT 5 UNION-ALL 2 TABLE ACCESS (BY INDEX ROWID), EMP 1INDEX (RANGE SCAN), IN_IOB 4TABLE ACCESS (BY INDEX ROWID), EMP 3INDEX (RANGE SCAN), I_DEPTNO    1 Cette opération extrait plusieurs ROWID en balayant l'index IN_IOB (par ordre croissant des clés). 2 Cette opération extrait une ligne de la table EMP sur la base de son ROWID. 3 Cette opération extrait plusieurs ROWID en balayant l'index I_DEPTNO (par ordre croissant des clés). 4 Cette opération extrait une ligne de la table EMP sur la base de son ROWID. 5 Cette opération accepte deux ensembles de lignes et renvoie l'agglomération des deux en conservant tous les doublons. 6 Cette étape du plan définit cette instruction comme instruction SELECT.

SELECT dname, deptno FROM dept WHERE deptno NOT IN (SELECT deptno FROM emp);   4 SELECT STATEMENT 3 FILTER 1 TABLE ACCESS (FULL), DEPT (SCOTT) 2 TABLE ACCESS (FULL), EMP (SCOTT) 1 Cette opération extrait toutes les lignes de la table DEPT en utilisant un balayage de table complet. 2 Cette opération extrait toutes les lignes de la table EMP en 3 Cette opération extrait une source de lignes et en exclut certaines pour renvoyer les lignes acceptées. 4 Cette étape du plan définit cette instruction comme instruction SELECT.

SELECT dname, deptno FROM dept WHERE NOT EXISTS  (SELECT deptno FROM emp WHERE dept.deptno = emp.deptno);    4 SELECT STATEMENT 3 NESTED LOOPS (ANTI) 1 TABLE ACCESS (FULL), DEPT 2 INDEX (RANGE SCAN), I_DEPTNO     1 Cette opération extrait toutes les lignes de la table DEPT en utilisant un balayage de table complet. 2 Cette opération extrait plusieurs ROWID en balayant l'index I_DEPTNO (par ordre croissant des clés). 3 Cette opération compare chaque ligne de la première source de lignes enfant avec toutes les lignes de la seconde, en joignant les paires de lignes répondant à la condition définie 4 Cette étape du plan définit cette instruction comme instruction SELECT  

Bibliographie KEVIN LONEY -MARLENE THERIAULT ORACLE 9i DBA HANDBOOK ( Manage a Robust, High-Performance Oracle Database) WWW.ORACLE.COM