0 / 0
Retourner à la version anglaise de la documentation
Procédure stockée COLLECT_STATISTICS dans la Data Virtualization
Dernière mise à jour : 26 nov. 2024
Procédure stockée COLLECT_STATISTICS dans la Data Virtualization

Rassemble des statistiques pour les tables virtualisées dans le cadre de la Data Virtualization. L'optimiseur de Data Virtualization utilise ces statistiques pour déterminer les plans d'accès optimaux permettant de traiter efficacement vos requêtes. Le schéma est DVSYS.

Avec plus de statistiques de table, l'optimiseur peut prendre de meilleures décisions pour fournir les meilleurs plans d'accès. Lorsque vous exécutez COLLECT_STATISTICS sur une table, les requêtes ultérieures sur cette table s'exécutent généralement beaucoup plus rapidement. Pour plus d'informations, voir Collecte de statistiques dans la Data Virtualization.

Important: Utilisez la commande ANALYZE (à la place de la procédure COLLECT_STATISTICS ) pour collecter des statistiques sur les tables virtualisées sur le stockage d'objets. Pour plus d'informations, voir Commande ANALYZE. Pour déterminer les tables virtualisées créées sur le stockage des objets, vous pouvez filtrer les objets virtualisés par type. Sélectionnez Object Storage, Tableou Afficher dans le menu Filtre dans Données > Data virtualization > Données virtualisées.

Droits

Pour exécuter la procédure 'COLLECT_STATISTICS, vous devez être responsable ou ingénieur en Data Virtualization. Pour plus d'informations, voir Gestion des rôles pour les utilisateurs dans Data Virtualization.

Pour collecter des statistiques, vous devez disposer des autorisations appropriées au niveau de la source de données distante et de la Data Virtualization. .

Paramètres d'entrée

Virtschema
Le type de ce paramètre requis est VARCHAR (128). Indique le nom de schéma de la table virtualisée.
virtname
Le type de ce paramètre requis est VARCHAR (128). Indique le nom de la table virtualisée.
virtcolumns
Le type de ce paramètre facultatif est VARCHAR (32672). Indique une liste de noms séparés par des virgules des colonnes à collecter pour les statistiques. Une valeur nulle indique que les statistiques doivent être collectées pour toutes les colonnes. Une chaîne vide indique qu'aucune statistique de colonne ne doit être collectée. Dans ce cas, seule la cardinalité de la table est collectée. Si un nom de colonne contient des caractères spéciaux, le nom doit être placé entre guillemets.
Type_collection
Le type de ce paramètre requis est SMALLINT. Indique le type de collecte de statistiques. Les valeurs valides sont 1 (typeremote-catalog ) et 2 (typeremote-query ):
Catalogue-distant
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.
Requête-distante
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.
Options
Le type de ce paramètre facultatif est VARCHAR (32672). Indique une liste de paramètres supplémentaires délimités par des virgules.
TABLESAMPLE
Indique une valeur double entre 0 et 99 inclus. La valeur représente le pourcentage de la table à échantillonner lors du calcul des statistiques. La valeur par défaut 0 indique qu'aucun échantillonnage n'est à effectuer. Cette option est valide uniquement avec le type de collecte de statistiques remote-query .
SEUIL d'échantillonnage
Indique une valeur entière supérieure à 0. La valeur représente le nombre minimal de lignes qu'une source de données doit contenir avant que l'échantillonnage (s'il est spécifié) puisse être utilisé. La valeur par défaut est 1000. Si le nombre de lignes est inférieur à ce seuil, l'échantillonnage n'est pas utilisé lorsque les statistiques de colonne sont calculées. Cette option est valide uniquement avec le type de collecte de statistiques remote-query .

Paramètres de sortie

diagnostics
Le type de ce paramètre est VARCHAR (32672). Représente la sortie de diagnostic en cas d'échec et un récapitulatif des statistiques collectées avec des résultats abrégés.

Notes d'utilisation

  • Exécutez la procédure COLLECT_STATISTICS soit directement, soit par l'intermédiaire du client web de Data Virtualization, chaque fois que vous apportez des modifications significatives aux données de la source de données distante.
  • Si un nom de colonne contient des caractères spéciaux, le nom doit être placé entre guillemets.
  • Si la source de données distante prend en charge les outils de collecte de statistiques locales, assurez-vous que les statistiques locales sont collectées et que le type remote-catalog est utilisé pour la collecte de statistiques sur la table virtualisée.
  • Si la source de données distante ne prend pas en charge les outils de collecte de statistiques locales, le type remote-query est la seule option disponible. Si la table virtualisée comporte plusieurs lignes, utilisez l'option TABLESAMPLE. Un taux d'échantillonnage de 20% est recommandé dans la plupart des cas.
  • Si vous ne spécifiez pas l'option TABLESAMPLE, l'option SAMPLING_THRESHOLD n'a aucun effet.
  • Si vous spécifiez l'option TABLESAMPLE et que le nombre de lignes dans la table virtualisée est inférieur à SAMPLING_THRESHOLD (valeur par défaut: 1000), l'échantillonnage n'a pas lieu car les statistiques résultantes seraient sous-optimales.
  • Lorsque vous spécifiez l'option TABLESAMPLE, la collecte de statistiques peut être sous-optimale si la fréquence d'échantillonnage est trop faible. Toutefois, l'augmentation du taux d'échantillonnage consommera plus de ressources et réduira les performances de la collecte de statistiques.
  • Lorsque vous spécifiez l'option TABLESAMPLE, la collecte de statistiques peut être sous-optimale si la table virtualisée comporte un nombre limité de lignes. Dans ce cas, augmentez la valeur de TABLESAMPLE ou n'échantillonnez pas les données.
  • Si la table virtualisée fait référence à une vue sur la source de données distante, le type remote-query est la seule option disponible et l'option TABLESAMPLE n'est pas prise en charge.
  • Si vous spécifiez l'option TABLESAMPLE avec un taux d'échantillonnage proche de 100, mais que la collecte de statistiques reste sous-optimale, envisagez de modifier la valeur SAMPLING_THRESHOLD.
  • Seule la statistique NUMNULLS est collectée pour les colonnes de type LOB.

Exemples

Les exemples suivants utilisent des tables virtualisées sur des tables faisant partie de la base de données SAMPLE dans IBM Db2®. Pour plus d'informations, voir The SAMPLE database.

  • Utilisez le type remote-catalog pour collecter des statistiques pour toutes les colonnes de la table MINISTÈRE.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 1, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."DEPARTMENT":
    Table Cardinality = 14
    Column "LOCATION" [CHAR(16)]:  colcard=1, numnulls=14, highkey="", lowkey=""
    Column "ADMRDEPT" [CHAR(3)]:  colcard=3, numnulls=0, highkey="E01", lowkey="A00"
    Column "DEPTNAME" [VARCHAR(36)]:  colcard=14, numnulls=0, highkey="SPIFFY COMPUTER SERVICE DIV.", lowkey="BRANCH OFFICE F2"
    Column "MGRNO" [CHAR(6)]:  colcard=9, numnulls=6, highkey="000100", lowkey="000020"
    Column "DEPTNO" [CHAR(3)]:  colcard=14, numnulls=0, highkey="I22", lowkey="B01"
    
    Return Status = 0
  • Utilisez le type remote-query pour collecter des statistiques pour toutes les colonnes de la table MINISTÈRE.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."DEPARTMENT":
    Table Cardinality = 14
    Column "LOCATION" [CHAR(16)]:  colcard=1, numnulls=14, highkey="", lowkey=""
    Column "ADMRDEPT" [CHAR(3)]:  colcard=3, numnulls=0, highkey="E01", lowkey="A00"
    Column "DEPTNAME" [VARCHAR(36)]:  colcard=14, numnulls=0, highkey="SUPPORT SERVICES", lowkey="ADMINISTRATION SYSTEMS"
    Column "MGRNO" [CHAR(6)]:  colcard=9, numnulls=6, highkey="000100", lowkey="000010"
    Column "DEPTNO" [CHAR(3)]:  colcard=14, numnulls=0, highkey="J22", lowkey="A00"
    
    Return Status = 0
  • Utilisez le type remote-query pour collecter des statistiques pour certaines des colonnes de la table MINISTÈRE.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', 'DEPTNO,DEPTNAME,LOCATION', 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."DEPARTMENT":
    Table Cardinality = 14
    Column "LOCATION" [CHAR(16)]:  colcard=1, numnulls=14, highkey="", lowkey=""
    Column "DEPTNAME" [VARCHAR(36)]:  colcard=14, numnulls=0, highkey="SUPPORT SERVICES", lowkey="ADMINISTRATION SYSTEMS"
    Column "DEPTNO" [CHAR(3)]:  colcard=14, numnulls=0, highkey="J22", lowkey="A00"
    
    Return Status = 0
  • Utilisez le type remote-query pour collecter uniquement les statistiques de la table MINISTÈRE.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', '', 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."DEPARTMENT":
    Table Cardinality = 14
    
    Return Status = 0
  • Utilisez le type remote-query pour tenter de collecter des statistiques pour une colonne qui n'est pas définie dans la table MINISTÈRE.
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', 'DEPTNO,FIRSTNME', 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : ERROR: VALIDATE COLUMN FILTER LIST -- Invalid column "FIRSTNME" in virtColumns
    
    Return Status = 0
  • Utilisez le type remote-catalog pour collecter des statistiques lorsque le catalogue distant ne comporte pas de statistiques pour la table locale (MINISTÈRE).
    call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 1, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : WARNING: No statistics found in remote catalog for table "SAMPLE  "."DEPARTMENT"
    
    Return Status = 0
  • Utilisez le type remote-catalog pour collecter des statistiques lorsque des colonnes avec des caractères spéciaux sont spécifiées.
    call dvsys.collect_statistics('SAMPLE', 'SpecialChars', '"Col,1","Col""2"', 2, null, ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."SpecialChars":
    Table Cardinality = 4
    Column "Col,1" [INTEGER]:  colcard=3, numnulls=0, highkey="3", lowkey="1"
    Column "Col"2" [INTEGER]:  colcard=3, numnulls=1, highkey="2", lowkey="1"
    
    Return Status = 0
  • Utilisez le type remote-catalog et un taux d'échantillonnage de 20% pour collecter des statistiques pour toutes les colonnes de la table SALES. Des lignes supplémentaires ont été ajoutées à la table SALES pour faciliter l'échantillonnage.
    call dvsys.collect_statistics('SAMPLE', 'SALES', null, 2, 'TABLESAMPLE=20', ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."SALES":
    Table Cardinality = 1304
    Column "SALES_DATE" [DATE]:  colcard=247, numnulls=0, highkey="2007-03-31", lowkey="2005-12-31"
    Column "SALES_PERSON" [VARCHAR(15)]:  colcard=3, numnulls=0, highkey="LUCCHESSI", lowkey="GOUNOT"
    Column "SALES" [INTEGER]:  colcard=19, numnulls=0, highkey="19", lowkey="1"
    Column "REGION" [VARCHAR(15)]:  colcard=4, numnulls=0, highkey="Quebec", lowkey="Manitoba"
    
    Return Status = 0
  • Utilisez le type remote-catalog , un taux d'échantillonnage de 20% et un SAMPLING_THRESHOLD de 40 lignes pour collecter des statistiques pour toutes les colonnes de la table EMP, qui comporte 42 lignes par défaut. Si SAMPLING_THRESHOLD n'est pas spécifié, l'option TABLESAMPLE est ignorée car le seuil d'échantillonnage par défaut est de 1000 lignes.
    call dvsys.collect_statistics('SAMPLE', 'EMP', null, 2, 'TABLESAMPLE=20,SAMPLING_THRESHOLD=40', ?)
    Value of output parameters
    --------------------------
    Parameter Name  : DIAGS
    Parameter Value : Collected statistics for table "SAMPLE  "."EMP":
    Table Cardinality = 42
    Column "EDLEVEL" [SMALLINT]:  colcard=5, numnulls=0, highkey="19", lowkey="12"
    Column "PHONENO" [CHAR(4)]:  colcard=10, numnulls=0, highkey="8953", lowkey="1793"
    Column "SEX" [CHAR(1)]:  colcard=2, numnulls=0, highkey="M", lowkey="F"
    Column "FIRSTNME" [VARCHAR(12)]:  colcard=11, numnulls=0, highkey="VINCENZO", lowkey="DIAN"
    Column "MIDINIT" [CHAR(1)]:  colcard=10, numnulls=0, highkey="V", lowkey=" "
    Column "BIRTHDATE" [DATE]:  colcard=11, numnulls=0, highkey="2003-05-26", lowkey="1955-09-15"
    Column "COMM" [DECIMAL(9,2)]:  colcard=11, numnulls=0, highkey="4220.00", lowkey="1272.00"
    Column "SALARY" [DECIMAL(9,2)]:  colcard=11, numnulls=0, highkey="96170.00", lowkey="31840.00"
    Column "LASTNAME" [VARCHAR(15)]:  colcard=9, numnulls=0, highkey="YAMAMOTO", lowkey="ADAMSON"
    Column "WORKDEPT" [CHAR(3)]:  colcard=6, numnulls=0, highkey="E21", lowkey="A00"
    Column "HIREDATE" [DATE]:  colcard=9, numnulls=0, highkey="2006-02-23", lowkey="1979-08-17"
    Column "BONUS" [DECIMAL(9,2)]:  colcard=4, numnulls=0, highkey="800.00", lowkey="300.00"
    Column "EMPNO" [CHAR(6)]:  colcard=9, numnulls=0, highkey="200340", lowkey="000050"
    Column "JOB" [CHAR(8)]:  colcard=5, numnulls=0, highkey="OPERATOR", lowkey="CLERK   "
    
    Return Status = 0
Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus