Voici ce que dit le site oracle sur le tuning
Performance tuning is the one area in which the Oracle DBA probably spends most of his or her time. If you’re a DBA helping developers to tune their SQL, you can improve performance by suggesting more efficient queries or table- and index-organization schemes. If you’re a production DBA, you’ll be dealing with user perceptions of a slow database, batch jobs taking longer and longer to complete, and so on. Performance tuning focuses primarily on writing efficient SQL, allocating appropriate computing resources, and analyzing wait events and contention in the system. Some Links for your kind reference.Oracle Tuning References
- Oracle® Database Performance Tuning Guide 10g Release 2 (10.2)
- Oracle® Database 2 Day + Performance Tuning Guide 10g Release 2 (10.2)
- Jonathan Lewis tips
- Performance Tuning Steps
- STATSPACK Tuning Tips
Je dirai même plus, une requête ou PL/SQL lent, c'est tout simplement bon à jeter à la corbeille de votre PC.
Il existe plusieurs moyens de rendre vos requêtes ou PL/SQL performants, le premier d'entre eux, est d'ordre d'architecture du schéma de la base de données elle même, disposer d'un schéma qui garantie la non redondance des accès aux tables, qui économise les ressources et les accès disque, c'est par ça qu'il faut commencer. Ensuite, il faut jouer sur les index dans les tables tout en sachant que trop d'index tue l'index. Une des solutions c'est d'embarquer dynamiquement les script de création de l'index quand on a besoin, et de le supprimer aussitôt qu'en on a fini.
Sachez aussi que Oracle ne prend pas spécialement en considération la création instantanée de vos index (c'est un peu la même histoire que le java garbage collector), des fois, il faut l'appeller manuellement. La commande pour lancer la prise en compte de vos index, sous Oracle est connu sous le nom du calcul des statistiques sur une table et la commande est de ce genre :
dbms_stats.gather_table_stats(schema_name,table_name,estimate_percent=>8,cascade=>true);
Sachez que la création d'un index sur un champ pour lequel on teste le cas NULL, fait perdre tout ces avantage à cet index. C'est le cas de la clause WHERE champ_name IS NULL (OR IS NOT NULL).
Sachez aussi qu'indexer un champ sur lequel il y a une fonction vous fait perdre tous les avantages de l'index. et cela se traduit par un parcours complet de la table au lieu de scander l'index et s'arrêter là. Exemple un index sur field_name est inutile si dans la clause WHERE TRIM(field_name)='TOTO'.
Un bouton magique sur ToadOracle vous permet de visualiser le plan d’exécution de votre requête, le but c'est d'éviter au minimum les FULL ACCESS sur les tables et de minimiser les lectures disque.
Je vous recommande vivement ce tutoriel pour plus détails.
Aucun commentaire:
Enregistrer un commentaire