Pour optimiser les performances des requêtes, vous pouvez collecter des statistiques sur les données demandées.
Les décisions de l'optimiseur basé sur les coûts sont cruciales pour la performance des requêtes. L'optimiseur prend ses décisions en utilisant des informations statistiques sur les données demandées. Des statistiques exactes et à jour assurent une performance optimale des requêtes. Recueillir des statistiques chaque fois que les conditions suivantes s'appliquent.
Vous pouvez en savoir plus sur les optimiseurs et les performances des requêtes dans Profils et instructions d'optimisation.
- Une nouvelle table est créée et remplie avec des données.
- Les données d'une table existante sous-tendent des modifications importantes, comme les conditions suivantes :
- De nouvelles données sont ajoutées.
- Les anciennes données sont supprimées.
- Les données existantes sont mises à jour.
La Data Virtualization recueille des statistiques sur les éléments suivants afin que l'optimiseur dispose de suffisamment d'informations pour élaborer des plans d'exécution efficaces :
- Toute table référencée dans une requête.
- Toute table référencée dans une vue. Lorsque vous créez une vue virtuelle, veillez à collecter des statistiques pour toutes les tables référencées dans la vue. Les statistiques ne sont pas collectées sur les vues.
- Toutes les colonnes référencées dans les prédicats (y compris les prédicats de jointure) et les fonctions d'agrégation référencées dans les requêtes.
Il n'est pas nécessaire de collecter des statistiques pour les colonnes qui apparaissent uniquement dans la première liste SELECT d'une requête.
- Cardinalité de la table (CARD)
- Nombre de lignes dans la table.
- Cardinalité de colonne (COLCARD)
- Nombre de valeurs distinctes de la colonne.
- Clé élevée (HIGH2KEY)
- La valeur de données la plus élevée ou la deuxième plus élevée de la colonne, en fonction de la source de données distante de la table virtualisée et du type de collection utilisé.
- Clé basse (LOW2KEY)
- Valeur de données la plus basse ou la plus basse pour la colonne, en fonction de la source de données distante de la table virtualisée et du type de collection utilisé. Pour de nombreuses sources de données, Data Virtualization collecte la valeur clé la plus basse, qui peut être une valeur vide. Un blanc n'indique pas que les statistiques n'ont pas été collectées.
- Nombre de valeurs NULL (NUMNULLS)
- Nombre de valeurs NULL dans la colonne. Ce nombre est la seule statistique collectant pour les colonnes de type LOB.
Types de collecte de statistiques
- remote-catalog
- Ce type de collecte de statistiques est uniquement pris en charge pour les tables virtualisées dans des sources de données distantes qui prennent en charge une méthode locale de collecte de statistiques. Les statistiques stockées dans les tables du catalogue de la source de données distante sont récupérées puis stockées dans le catalogue de statistiques de Data Virtualization.Il est essentiel de s'assurer que des statistiques précises sont disponibles dans la source de données distante. Le type de collecte de statistiques remote-catalog n'est pas pris en charge pour les tables groupées.
- remote-query
- Ce type de collecte de statistiques utilise des requêtes SQL sur la table virtualisée pour calculer les statistiques.Ce type peut mobiliser beaucoup de ressources et prendre beaucoup de temps à compléter si la table virtualisée contient de nombreuses lignes ou statistiques pour de nombreuses colonnes. Pour améliorer les performances et préserver les ressources, vous pouvez collecter des statistiques avec un échantillonnage de données en spécifiant l'option TABLESAMPLE sur la procédure stockée COLLECT_STATISTICS dans la Data Virtualization ou en utilisant la commande 'ANALYZE pour les sources de données dans le stockage d'objets dans le nuage.
Meilleures pratiques
Pour les sources de données distantes qui prennent en charge les outils de collecte de statistiques locales, tels que " IBM® Db2® et " Oracle, la meilleure pratique pour la collecte de statistiques dans le cadre de la Data Virtualization consiste à s'assurer que les statistiques locales de la source de données distante sont exactes et à jour, en particulier les statistiques de base des colonnes clés qui sont utilisées dans les prédicats des requêtes. Il est conseillé de créer une tâche de collecte de statistiques dans le client web de Data Virtualization à cette fin.