- Schémas :
Vue QUERY_HISTORY¶
Cette vue Account Usage peut être utilisée pour interroger l’historique des requêtes Snowflake selon différentes dimensions (plage de temps, session, utilisateur, entrepôt, etc.) au cours des 365 derniers jours (1 an).
La vue est disponible dans les schémas ACCOUNT_USAGE et READER_ACCOUNT_USAGE avec les différences suivantes :
La colonne suivante est disponible uniquement dans la vue du compte de lecteur :
READER_ACCOUNT_NAME
Les colonnes suivantes ne sont pas fournies dans la vue du compte de lecteur :
QUERY_ACCELERATION_BYTES_SCANNED
QUERY_ACCELERATION_PARTITIONS_SCANNED
QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR
Voir aussi :
QUERY_HISTORY , QUERY_HISTORY_BY_* (Fonction de table Information Schema) Surveillance de l’activité des requêtes avec l’historique des requêtes (tableau de bord Snowsight)
Colonnes¶
Nom de la colonne |
Type de données |
Description |
---|---|---|
READER_ACCOUNT_NAME |
TEXT |
Nom du compte de lecteur dans lequel l’instruction SQL a été exécutée. |
QUERY_ID |
TEXT |
Identificateur interne / généré par le système pour l’instruction SQL. |
QUERY_TEXT |
TEXT |
Texte de l’instruction SQL. La limite est de 100 000 caractères. Les instructions SQL contenant plus de 100 000 caractères seront tronquées. |
DATABASE_ID |
NUMBER |
Identificateur interne/généré par le système pour la base de données utilisée. |
DATABASE_NAME |
TEXT |
Base de données spécifiée dans le contexte de la requête lors de la compilation. |
SCHEMA_ID |
NUMBER |
Identificateur interne / généré par le système pour le schéma utilisé. |
SCHEMA_NAME |
TEXT |
Schéma spécifié dans le contexte de la requête lors de la compilation. |
QUERY_TYPE |
TEXT |
DML, requête, etc. Si la requête a échoué, le type de requête peut être UNKNOWN. |
SESSION_ID |
NUMBER |
Session qui a exécuté l’instruction. |
USER_NAME |
TEXT |
Utilisateur qui a émis la requête. |
ROLE_NAME |
TEXT |
Rôle actif dans la session au moment de la requête. |
WAREHOUSE_ID |
NUMBER |
Identificateur interne / généré par le système pour l’entrepôt utilisé. |
WAREHOUSE_NAME |
TEXT |
Entrepôt sur lequel la requête a été exécutée, le cas échéant. |
WAREHOUSE_SIZE |
TEXT |
Taille de l’entrepôt lorsque cette instruction est exécutée. |
WAREHOUSE_TYPE |
TEXT |
Type de l’entrepôt lorsque cette instruction est exécutée. |
CLUSTER_NUMBER |
NUMBER |
Le cluster (dans un entrepôt multi-cluster) sur lequel cette instruction a été exécutée. |
QUERY_TAG |
TEXT |
Balise de requête définie pour cette instruction via le paramètre de session QUERY_TAG. |
EXECUTION_STATUS |
TEXT |
Statut d’exécution de la requête. Valeurs valides : |
ERROR_CODE |
NUMBER |
Code d’erreur, si la requête a renvoyé une erreur |
ERROR_MESSAGE |
TEXT |
Message d’erreur si la requête a renvoyé une erreur |
START_TIME |
TIMESTAMP_LTZ |
Heure de début de l’instruction (dans le fuseau horaire local) |
END_TIME |
TIMESTAMP_LTZ |
Heure de fin de l’instruction (dans le fuseau horaire local). |
TOTAL_ELAPSED_TIME |
NUMBER |
Temps écoulé (en millisecondes). |
BYTES_SCANNED |
NUMBER |
Nombre d’octets analysés par cette instruction. |
PERCENTAGE_SCANNED_FROM_CACHE |
FLOAT |
Pourcentage de données analysées à partir du cache du disque local. La valeur va de 0,0 à 1,0. Multipliez par 100 pour obtenir un vrai pourcentage. |
BYTES_WRITTEN |
NUMBER |
Octets écrits (par exemple, lors du chargement dans une table). |
BYTES_WRITTEN_TO_RESULT |
NUMBER |
Octets écrits dans un objet de résultat. Par exemple, |
BYTES_READ_FROM_RESULT |
NUMBER |
Octets lus à partir d’un objet de résultat. |
ROWS_PRODUCED |
NUMBER |
Nombre de lignes produites par cette instruction. |
ROWS_INSERTED |
NUMBER |
Nombre de lignes insérées par la requête. |
ROWS_UPDATED |
NUMBER |
Nombre de lignes mises à jour par la requête. |
ROWS_DELETED |
NUMBER |
Nombre de lignes supprimées par la requête. |
ROWS_UNLOADED |
NUMBER |
Nombre de lignes déchargées lors de l’exportation des données. |
BYTES_DELETED |
NUMBER |
Nombre d’octets supprimés par la requête. |
PARTITIONS_SCANNED |
NUMBER |
Nombre de micro-partitions analysées. |
PARTITIONS_TOTAL |
NUMBER |
Nombre total de micro-partitions de toutes les tables incluses dans cette requête. |
BYTES_SPILLED_TO_LOCAL_STORAGE |
NUMBER |
Volume de données déversées sur le disque local (« spill to disk »). |
BYTES_SPILLED_TO_REMOTE_STORAGE |
NUMBER |
Volume de données déversées sur le disque distant (« spill to disk »). |
BYTES_SENT_OVER_THE_NETWORK |
NUMBER |
Quantité de données envoyées sur le réseau. |
COMPILATION_TIME |
NUMBER |
Temps de compilation (en millisecondes) |
EXECUTION_TIME |
NUMBER |
Temps d’exécution (en millisecondes) |
QUEUED_PROVISIONING_TIME |
NUMBER |
Temps (en millisecondes) passé dans la file d’attente de l’entrepôt à attendre que les ressources de calcul de l’entrepôt soient provisionnées en raison de la création, de la reprise ou du redimensionnement de l’entrepôt. |
QUEUED_REPAIR_TIME |
NUMBER |
Temps (en millisecondes) passé dans la file d’attente de l’entrepôt à attendre que les ressources de calcul de l’entrepôt soient réparées. |
QUEUED_OVERLOAD_TIME |
NUMBER |
Temps (en millisecondes) passé dans la file d’attente d’entrepôt en raison de la surcharge de l’entrepôt par la charge de la requête actuelle. |
TRANSACTION_BLOCKED_TIME |
NUMBER |
Temps (en millisecondes) passé à être bloquée par un DML simultané. |
OUTBOUND_DATA_TRANSFER_CLOUD |
TEXT |
Fournisseur Cloud cible pour les instructions qui déchargent des données vers une autre région et/ou un autre Cloud. |
OUTBOUND_DATA_TRANSFER_REGION |
TEXT |
Région cible pour les instructions qui déchargent des données dans une autre région et / ou cloud. |
OUTBOUND_DATA_TRANSFER_BYTES |
NUMBER |
Nombre d’octets transférés dans les instructions qui déchargent des données vers une autre région et/ou un autre Cloud. |
INBOUND_DATA_TRANSFER_CLOUD |
TEXT |
Fournisseur de Cloud source pour les instructions qui chargent des données provenant d’une autre région et/ou d’un Cloud. |
INBOUND_DATA_TRANSFER_REGION |
TEXT |
Région source pour les instructions qui chargent des données d’une autre région et/ou d’un autre Cloud. |
INBOUND_DATA_TRANSFER_BYTES |
NUMBER |
Nombre d’octets transférés lors d’une opération de réplication à partir d’un autre compte. Le compte source peut se trouver dans la même région ou dans une région différente du compte actuel. |
LIST_EXTERNAL_FILES_TIME |
NUMBER |
Temps (en millisecondes) consacré à la liste des fichiers externes. |
CREDITS_USED_CLOUD_SERVICES |
NUMBER |
Nombre de crédits utilisés pour les services Cloud. Cette valeur ne prend pas en compte l’ajustement pour les services Cloud, et peut donc être supérieure aux crédits facturés. Pour déterminer le nombre de crédits réellement facturés, exécutez des requêtes sur la vue METERING_DAILY_HISTORY. |
RELEASE_VERSION |
TEXT |
Version de publication au format |
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS |
NUMBER |
Nombre total de fois que cette requête a appelé des services distants. Pour des détails importants, voir les notes d’utilisation. |
EXTERNAL_FUNCTION_TOTAL_SENT_ROWS |
NUMBER |
Nombre total de lignes envoyées par cette requête dans tous les appels à tous les services distants. |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS |
NUMBER |
Nombre total de lignes que cette requête a reçues de tous les appels vers tous les services distants. |
EXTERNAL_FUNCTION_TOTAL_SENT_BYTES |
NUMBER |
Nombre total d’octets que cette requête a envoyés dans tous les appels à tous les services distants. |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES |
NUMBER |
Nombre total d’octets que cette requête a reçus de tous les appels vers tous les services distants. |
QUERY_LOAD_PERCENT |
NUMBER |
Pourcentage approximatif de ressources de calcul actives dans l’entrepôt pour cette exécution de requête. |
IS_CLIENT_GENERATED_STATEMENT |
BOOLEAN |
Indique si la requête a été générée par le client. |
QUERY_ACCELERATION_BYTES_SCANNED |
NUMBER |
Nombre d’octets analysés par le service d’accélération des requêtes. |
QUERY_ACCELERATION_PARTITIONS_SCANNED |
NUMBER |
Nombre de partitions analysées par le service d’accélération des requêtes. |
QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR |
NUMBER |
Facteur d’échelle de limite supérieure dont aurait bénéficié une requête. |
TRANSACTION_ID |
NUMBER |
ID de la transaction qui contient l’instruction ou 0 si l’instruction n’est pas exécutée dans une transaction. |
CHILD_QUERIES_WAIT_TIME |
NUMBER |
Temps (en millisecondes) pour compléter la recherche en cache lors de l’appel d’une fonction mémoïsable. |
ROLE_TYPE |
VARCHAR |
Spécifie |
QUERY_HASH |
TEXT |
La valeur de hachage calculée sur la base du texte SQL canonisé. |
QUERY_HASH_VERSION |
NUMBER |
La version de la logique utilisée pour calculer |
QUERY_PARAMETERIZED_HASH |
TEXT |
La valeur de hachage calculée à partir de la requête paramétrée. |
QUERY_PARAMETERIZED_HASH_VERSION |
NUMBER |
La version de la logique utilisée pour calculer |
OWNER_ROLE_TYPE |
TEXT |
Type de rôle qui possède l’objet, soit |
Notes sur l’utilisation¶
Général¶
La latence pour la vue peut atteindre 45 minutes.
Les valeurs des colonnes EXTERNAL_FUNCTION_TOTAL_INVOCATIONS, EXTERNAL_FUNCTION_TOTAL_SENT_ROWS, EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS, EXTERNAL_FUNCTION_TOTAL_SENT_BYTES et EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES sont affectées par de nombreux facteurs, notamment :
Le nombre de fonctions externes dans l’instruction SQL.
Le nombre de lignes par lot envoyées à chaque service distant.
Le nombre de tentatives en raison d’erreurs transitoires (par exemple, parce qu’une réponse n’a pas été reçue dans le délai prévu).
Tables hybrides¶
Les conseils suivants concernent l’exécution de requêtes sur des tables hybrides lors de l’utilisation de vues QUERY_HISTORY.
Les requêtes de courte durée qui utilisent exclusivement des tables hybrides ne génèrent plus d’enregistrement dans cette vue ou dans QUERY_HISTORY (fonction de table Information Schema). Pour surveiller ces requêtes, utilisez la fonction AGGREGATE_QUERY_HISTORY. Cette vue vous permet de surveiller plus facilement les charges de travail opérationnelles à haut débit pour détecter les tendances et les problèmes.
Les requêtes à courte durée d’exécution qui opèrent exclusivement sur des tables hybrides ne fourniront plus de profil de requête que vous pouvez inspecter dans Snowsight.
Les requêtes sur les tables hybrides génèrent un enregistrement dans la vue QUERY_HISTORY et un profil de requête si l’une des conditions suivantes est remplie :
Une requête est exécutée sur n’importe quel type de table autre que les tables hybrides. Cette condition garantit qu’il n’y a pas de changement de comportement pour les charges de travail existantes non Unistore.
Une requête échoue avec un EXECUTION_STATUS qui est
failed_with_incident
(voir QUERY_HISTORY). Cette condition garantit que vous pouvez enquêter et signaler la requête spécifique qui a échoué afin d’obtenir de l’aide.Une requête dure plus longtemps qu’environ 500 millisecondes. Cette condition permet d’étudier les problèmes de performance des requêtes lentes.
La taille du résultat de la requête est trop importante.
Une requête est associée à une transaction Snowflake.
Une requête contient une fonction système avec des effets secondaires.
Une requête n’est pas l’un des types d’instructions suivants : SELECT, INSERT, DELETE, UPDATE, MERGE.
Une requête est exécutée à partir de SnowSQL, Snowsight ou de la console classique. Cette condition garantit que vous pouvez générer manuellement un profil de requête complet afin d’étudier les problèmes de performance pour toute requête spécifique, même si elle n’est pas classée comme étant en cours d’exécution depuis longtemps.
Même si une requête ne répond à aucun des critères ci-dessus, les requêtes peuvent également être échantillonnées périodiquement pour générer un enregistrement dans la vue QUERY_HISTORY et un profil de requête pour faciliter votre enquête.