Statistiques du catalogue
Lorsque le compilateur de requêtes optimise les plans de requête, ses décisions sont fortement influencées par les informations statistiques relatives à la taille des tables de base de données, des index et des vues statistiques. Ces informations sont stockées dans les tables de catalogue système.
L'optimiseur utilise également des informations sur la distribution des données dans des colonnes spécifiques de tables, d'index et de vues statistiques si ces colonnes sont utilisées pour sélectionner des lignes ou pour joindre des tables. L'optimiseur utilise ces informations pour estimer les coûts des plans d'accès alternatifs pour chaque requête.
Des informations statistiques sur le rapport de cluster des index, le nombre de pages élémentaires dans les index, le nombre de lignes de table qui débordent leurs pages d'origine et le nombre de pages remplies et vides dans une table peuvent également être collectées. Vous pouvez utiliser ces informations pour décider quand réorganiser les tables ou les index.
Les statistiques de table dans un environnement de base de données partitionnée sont collectées uniquement pour la partie de la table qui réside sur la partition de base de données sur laquelle l'utilitaire est exécuté, ou pour la première partition de base de données du groupe de partitions de base de données qui contient la table. Les informations sur les vues statistiques sont collectées pour toutes les partitions de base de données.
Statistiques mises à jour par l'utilitaire runstats
Les statistiques de catalogue sont collectées par l'utilitaire runstats, qui peut être démarré en exécutant la commande RUNSTATS , en appelant la procédure ADMIN_CMD ou en appelant l'API db2Runstats . Les mises à jour peuvent être lancées manuellement ou automatiquement.
Dans IBM Data Studio Version 3.1 ou ultérieure, vous pouvez utiliser l'assistant de tâches pour collecter les statistiques du catalogue. Les assistants de tâche peuvent vous guider lors du processus de définition d'options, en vérifiant les commandes générées automatiquement pour effectuer la tâche et en exécutant ces commandes. Pour plus de détails, voir Administration des bases de données avec des assistants de tâche.
Les statistiques sur les tables temporaires déclarées ne sont pas stockées dans le catalogue système, mais dans des structures de mémoire qui représentent les informations de catalogue pour les tables temporaires déclarées. Il est possible (et dans certains cas, il peut être utile) d'exécuter des statistiques d'exécution sur une table temporaire déclarée.
- Nombre de pages qui contiennent des lignes
- Nombre de pages utilisées
- Nombre de lignes dans la table (la cardinalité)
- Nombre de lignes en dépassement de capacité
- Pour les tables MDC et ITC, nombre de blocs contenant des données
- Pour les tables partitionnées, degré de mise en cluster des données dans une partition de données unique
- Les statistiques de distribution des données, qui sont utilisées par l'optimiseur pour estimer les plans d'accès efficaces pour les tables et les vues statistiques dont les données ne sont pas distribuées de manière égale et dont les colonnes comportent un nombre significatif de valeurs en double
- Statistiques d'index détaillées, qui sont utilisées par l'optimiseur pour déterminer l'efficacité d'accès aux données de table via un index
- Les statistiques de sous-élément pour les prédicats LIKE, en particulier celles qui recherchent des motifs dans des chaînes (par exemple,
LIKE %disk%), sont également utilisées par l'optimiseur
- Nombre de pages qui contiennent des lignes
- Nombre de pages utilisées
- Nombre de lignes dans la table (cardinalité)
- Nombre de lignes en dépassement de capacité
- Pour les tables MDC et ITC, nombre de blocs contenant des données
- Lorsque les paramètres de configuration de base de données num_freqvalues et num_quantiles sont définis sur 0
- Lorsque la distribution des données est connue, par exemple lorsque chaque valeur de données est unique
- Lorsque la colonne contient un type de données LONG, LOB ou structuré
- Pour les types de ligne dans les sous-tables (les statistiques de niveau table NPAGES, FPAGES et OVERFLOW ne sont pas collectées)
- Si des distributions de quantiles sont demandées, mais qu'il n'y a qu'une seule valeur non nulle dans la colonne
- Pour les index étendus ou les tables temporaires déclarées
- Cardinalité de la colonne
- Longueur moyenne de la colonne (espace moyen, en octets, requis lorsque la colonne est stockée dans la mémoire de la base de données ou dans une table temporaire)
- Deuxième valeur la plus élevée dans la colonne
- Deuxième valeur la plus faible de la colonne
- Nombre de valeurs nulles dans la colonne
- Nombre de documents XML NULL
- Nombre de documents XML non NULL
- Nombre de chemins distincts
- Somme du nombre de noeuds pour chaque chemin distinct
- Somme du nombre de documents pour chaque chemin distinct
- Les k paires de (chemin, nombre de noeuds) ayant le plus grand nombre de noeuds
- Les k paires de (chemin, nombre de documents) ayant le plus grand nombre de documents
- Les k triples de (chemin, valeur, nombre de noeuds) avec le plus grand nombre de noeuds
- Les k triples de (chemin, valeur, nombre de documents) avec le plus grand nombre de documents
- Pour chaque chemin distinct qui conduit à un texte ou à une valeur d'attribut:
- Nombre de valeurs distinctes que ce chemin peut prendre
- Valeur la plus élevée
- Valeur la plus faible
- Nombre de noeuds de texte ou d'attribut
- Nombre de documents contenant le texte ou les noeuds d'attribut
- Les statistiques de distribution sont collectées pour chaque index sur données XML spécifiées sur une colonne XML.
- L'utilitaire runstats doit collecter à la fois des statistiques de distribution et des statistiques de table pour collecter des statistiques de distribution pour un index sur des données XML. Les statistiques de table doivent être collectées pour que les statistiques de distribution soient collectées car les statistiques de distribution XML sont stockées avec les statistiques de table.
La collecte de statistiques d'index uniquement ou la collecte de statistiques d'index lors de la création d'index ne collectera pas de statistiques de distribution pour un index sur des données XML.
Par défaut, l'utilitaire RUNSTATS collecte des informations sur 250 quantiles au maximum pour établir des statistiques de distribution pour chaque index sur données XML. Le nombre de quantiles maximal pour une colonne peut être spécifié lors de l'exécution de l'utilitaire RUNSTATS.
- Les statistiques de distribution sont collectées pour les index sur données XML de type VARCHAR, DOUBLE, TIMESTAMP et DATE. Les statistiques de distribution XML ne sont pas collectées pour les index sur données XML de type VARCHAR HASHED.
- Les statistiques de distribution XML sont collectées lorsque des opérations de table automatiques RUNSTATS sont effectuées.
- Les statistiques de distribution XML ne sont pas créées lors du chargement de données avec l'option STATISTICS.
- Les statistiques de distribution XML ne sont pas collectées pour les index partitionnés sur les données XML définies sur une table partitionnée.
- Nom basé sur l'horodatage pour le groupe de colonnes
- Cardinalité du groupe de colonnes
- Nombre d'entrées d'index ( cardinalité d'index)
- Nombre de pages élémentaires
- Nombre de niveaux d'index
- Degré de mise en cluster des données de table dans l'index
- Degré de mise en cluster des clés d'index par rapport aux partitions de données
- Rapport entre le nombre de pages élémentaires situées sur le disque dans l'ordre des clés d'index et le nombre de pages de la plage de pages occupées par l'index
- Nombre de valeurs distinctes contenues dans la première colonne de l'index
- Nombre de valeurs distinctes contenues dans les deux, trois et quatre premières colonnes de l'index
- Nombre de valeurs distinctes contenues dans toutes les colonnes de l'index
- Nombre de pages élémentaires situées sur le disque dans l'ordre des clés d'index, avec peu ou pas d'écarts importants entre elles
- Taille moyenne de la clé feuille, sans colonnes d'inclusion
- Taille moyenne de la clé feuille, avec les colonnes d'inclusion
- Nombre de pages sur lesquelles tous les identificateurs d'enregistrement (RID) sont marqués comme supprimés
- Nombre de RID marqués comme supprimés sur les pages où tous les RID ne sont pas marqués comme supprimés
Pour un index partitionné, ces statistiques sont représentatives d'une partition d'index unique, à l'exception des valeurs distinctes de la première colonne de l'index, des deux, trois et quatre premières colonnes de l'index et de toutes les colonnes de l'index. Les statistiques par partition d'index sont également collectées afin de déterminer si une partition d'index doit être réorganisée.
La collecte de statistiques invalide les instructions dynamiques mises en cache qui référencent les tables pour lesquelles des statistiques ont été collectées. Cela permet d'optimiser à nouveau les instructions dynamiques mises en cache avec les statistiques les plus récentes.