Statistiques Oracle
Cette fonction permet de visualiser les statistiques générées sur la base de données lorsque la base de données utilisée est Oracle™.
Elle permet aussi de générer ou de supprimer les statistiques.
Remarque importante
Attention, ce type de fonction facilite, via une interface utilisateur homogène avec le progiciel, le lancement de procédures d'exploitation dévolues à un administrateur de base de données. Elle est faite pour être lancée par un tel administrateur (habituellement appelé DBA).
Pour être utilisée avec profit, elle suppose donc une connaissance préalable du fonctionnement des bases de données et de leur optimisation.
A contrario, une utilisation inappropriée de la fonction peut poser de sérieux problèmes de performances et mettre en péril la sécurité de l'exploitation du progiciel.
Gestion de l'écran
Cette fonction permet de visualiser et de générer ou supprimer les statistiques sur la base de données.
Ces éléments sont présentés sur trois onglets : le premier donne la liste des tables et l'état des statistiques pour chacune, le deuxième donne la liste des index et l'état des statistiques pour chacun, le troisième donne la liste des paramètres de base de données liés à l'optimiseur et à l'utilisation des statistiques.
En-tête
Permet de connaître les caractéristiques de la base de données utilisée.
Base de données (champ BDDNAM) |
Nom de la base de données. |
Version (champ VER) |
Numéro de version de la base de données. |
champ VERDES |
Description de la version de la base de données. |
Onglet Tables
Cet onglet présente la liste des tables et l'état des statistiques pour chacune d'elles.
Il est possible de générer ou supprimer les statistiques :
- pour une table par clic droit,
- pour toutes les tables ou une partie des tables en sélectionnant les lignes voulues avant de déclencher l'action par les boutons de bas d'écran.
La suppression des statistiques sur une table supprimera la totalité des statistiques générées pour celle-ci et donc aussi de ses index.
La génération des statistiques sur une table ne génèrera pas les statistiques sur ses index.
Tableau
A traiter (champ PROFLG) |
Permet de définir si la ligne doit être traitée en génération ou suppression de statistiques, par les boutons de bas d'écran correspondants. |
Table (champ TAB) |
Nom de la table dans la base de données |
Statistiques (champ STTFLG) |
Indique si des statistiques valides sont générées en base de données |
Date dernière analyse (champ STTDAT) |
Date de la dernière analyse des statistiques |
champ STTHOU |
Heure de la dernière analyse des statistiques |
Oui à tout le reste |
Lorsqu'on a un tableau de saisie de choix multiples avec un choix de réponse Oui / Non sur chaque ligne, cette fonction permet de répondre Oui à toutes les lignes à partir de la ligne courante. |
Non à tout le reste |
Lorsqu'on a un tableau de saisie de choix multiples avec un choix de réponse Oui / Non sur chaque ligne, cette fonction permet de répondre Non à toutes les lignes à partir de la ligne courante. |
Actualiser la ligne |
Permet de rafraîchir l'affichage de la ligne courante du tableau |
Générer pour la ligne |
Permet de générer les statistiques pour la ligne courante du tableau |
Supprimer pour la ligne |
Permet de supprimer les statistiques pour la ligne courante du tableau |
Onglet Index
Cet onglet présente la liste des index et l'état des statistiques pour chacun d'eux.
Tableau
A traiter (champ PROFLG) |
Permet de définir si la ligne doit être traitée en génération ou suppression de statistiques, par les boutons de bas d'écran correspondants. |
Table (champ TAB) |
Nom de la table dans la base de données |
Index (champ INDEX) |
Nom de l'index dans la base de données |
Statistiques (champ STTFLG) |
Indique si des statistiques valides sont générées en base de données |
Date dernière analyse (champ STTDAT) |
Date de la dernière analyse des statistiques |
champ STTHOU |
Heure de la dernière analyse des statistiques |
Il est possible de générer ou supprimer les statistiques :
- pour un index par clic droit,
- pour tous les index ou une partie des index en sélectionnant les lignes voulues avant de déclencher l'action par les boutons de bas d'écran.
Oui à tout le reste |
Lorsqu'on a un tableau de saisie de choix multiples avec un choix de réponse Oui / Non sur chaque ligne, cette fonction permet de répondre Oui à toutes les lignes à partir de la ligne courante. |
Non à tout le reste |
Lorsqu'on a un tableau de saisie de choix multiples avec un choix de réponse Oui / Non sur chaque ligne, cette fonction permet de répondre Non à toutes les lignes à partir de la ligne courante. |
Actualiser la ligne |
Permet de rafraîchir l'affichage de la ligne courante du tableau |
Générer pour la ligne |
Permet de générer les statistiques pour la ligne courante du tableau |
Supprimer pour la ligne |
Permet de supprimer les statistiques pour la ligne courante du tableau |
Onglet Base
Cet onglet présente la liste des paramètres de base de données liées à l'optimiseur et à l'utilisation des statistiques.
Tableau Paramètres de l'optimiseur
Instance (champ INSTID) |
Paramètre (champ PAR) |
Affiche les paramètres liés à l'optimiseur et à l'utilisation des statistiques Les paramètres présentés dépendent de la version d'Oracle. Ces paramètres ne sont pas modifiables depuis cette fonction. |
Valeur (champ PARVAL) |
Valeur par défaut (champ DEFVAL) |
Description (champ DES) |
Il n'est pas possible d'agir ici sur ces valeurs.
Actualiser la ligne |
Générer pour la ligne |
Supprimer pour la ligne |
Onglet Base
Tableau Paramètres de l'optimiseur
Instance (champ INSTID) |
Paramètre (champ PAR) |
Affiche les paramètres liés à l'optimiseur et à l'utilisation des statistiques Les paramètres présentés dépendent de la version d'Oracle. Ces paramètres ne sont pas modifiables depuis cette fonction. |
Valeur (champ PARVAL) |
Valeur par défaut (champ DEFVAL) |
Description (champ DES) |
Boutons spécifiques
Actualiser |
Ce bouton, également accessible par le raccourci , permet de rafraîchir l'affichage des onglets. |
Générer |
Permet de générer les statistiques pour toutes les lignes sélectionnées dans les tableaux des onglets Tables et Index |
Supprimer |
Permet de supprimer les statistiques pour toutes les lignes sélectionnées dans les tableaux des onglets Tables et Index |
Lancer |
Explications sur les statistiques Oracle
Quand les statistiques doivent être calculées ?
Cela dépend du taux et du volume de changement des données dans la base.
Les statistiques d’un objet deviennent obsolètes lorsqu’un volume important d’activité DML est opéré sur l’objet.
Il faut veiller à faire suivre une insertion ou une suppression massive par une nouvelle analyse, afin d’assurer la correspondance entre les statistiques du dictionnaire, la distribution et le contenu des lignes de la table. Si votre table contient après-coup un nombre important de lignes et que vos statistiques portent sur une petite partie d’entre-elles, il est possible que le plan d’exécution construit par l’optimiseur ne soit pas optimal.
Comment fonctionne l'optimiseur ?
L'optimisation basée sur le coût est déclarée par un le paramètre optimizer_mode qui peut prendre 3 valeurs
-
ALL_ROWS (valeur par défaut en Oracle 10)
-
FIRST_ROWS [n]
-
FIRST_ROWS
-
CHOOSE (valeur par défaut en Oracle 9, non supportée en Oracle 10)
L'optimisation statique est déclarée par la valeur RULE. Dans ce cas, l'optimiseur utilise la syntaxe de la requête pour réaliser le meilleur plan d'exécution. L’optimiseur syntaxique n'est plus supporté en Oracle 10.
- Si le paramètre OPTIMIZER_MODE est positionné à ALL_ROWS, cela veut dire "Meilleur débit" : la requête est exécutée pour qu'elle soit la plus rapide possible pour tous les enregistrements à charger.
- Si le paramètre OPTIMIZER_MODE est positionné à FIRST_ROWS, cela veut dire "Meilleur temps" : la requête est exécutée pour que la première réponse soit trouvée le plus rapidement possible.
- Si le paramètre OPTIMIZER_MODE est positionné à FIRST_ROWS [n], cela veut dire "Meilleur temps" : la requête est exécutée pour que les n premières réponses soient trouvées le plus rapidement possible.
- Si le paramètre OPTIMIZER_MODE est positionné à CHOOSE, c’est la présence de statistiques dans le dictionnaire qui détermine si l’optimiseur statistique est utilisé.
Utilisation d'un mode basé sur les coûts
Il est important que les statistiques soient générées pour tous les objets dans un schéma. En effet, la présence de statistiques partielles pour une instruction select peut amener le processus serveur à évaluer des statistiques sur des objets qui n’en disposent pas. Ce type d’échantillonnage de statistiques réalisé au cours de l’exécution n’est pas enregistré de façon permanente dans le dictionnaire de données. Il est donc répété à chaque exécution de la même requête.
Informations techniques
Toutes les informations sur les tables, index et statistiques sont lues directement dans la base de données à partir des tables et vues Oracle :
- V$PARAMETER
- PRODUCT_COMPONENT_VERSION
- USER_TABLES
- USER_INDEXES
Les dates de statistiques correspondent à la colonne LAST_ANALYZED des vues Oracle USER_TABLES et USER_INDEXES.
Les statistiques sont générées à l'aide du package Oracle DBMS_STATS.
Les procédures utilisées sont :
- GATHER_TABLE_STATS
- GATHER_INDEX_STATS
- DELETE_TABLE_STATS
- DELETE_INDEX_STATS