Statistiques sur les LMD partitionnés actifs

Le langage de manipulation de données (LMD) partitionné actif (LMD) fournit des données en temps réel progression des LMD partitionnés actuellement actifs dans votre base de données.

Spanner fournit une table intégrée, SPANNER_SYS.ACTIVE_PARTITIONED_DMLS, qui répertorie les LMD partitionnés en cours d'exécution et les progrès réalisés sur ces éléments.

Dans cet article, nous allons décrire le tableau en détail, vous montrer des exemples des requêtes utilisant ce tableau et, enfin, montrer comment utiliser ces pour limiter les problèmes causés par les LMD partitionnés actifs.

Disponibilité

Les données SPANNER_SYS ne sont disponibles que via des interfaces SQL. Par exemple:

Les autres méthodes de lecture unique fournies par Spanner ne sont pas compatibles SPANNER_SYS

ACTIVE_PARTITIONED_DMLS

SPANNER_SYS.ACTIVE_PARTITIONED_DMLS renvoie une liste de LMD partitionnés actifs, triés en fonction de leur heure de début.

Schéma de la table

Vous trouverez ci-dessous le schéma de la table pour SPANNER_SYS.ACTIVE_PARTITIONED_DMLS.

Nom de la colonne Type Description
TEXT STRING Texte de l'instruction de requête LMD partitionnée.
TEXT_FINGERPRINT INT64 L'empreinte est un hachage du texte LMD partitionné.
SESSION_ID STRING ID de la session qui exécute le LMD partitionné. La suppression de l'ID de session annule la requête.
NUM_PARTITIONS_TOTAL INT64 Nombre total de partitions dans le LMD partitionné.
NUM_PARTITIONS_COMPLETE INT64 Nombre de partitions terminées par le LMD partitionné.
NUM_TRIVIAL_PARTITIONS_COMPLETE INT64 Nombre de partitions complètes pour lesquelles aucune ligne n'a été traitée.
PROGRESS DOUBLE La progression d'un LMD partitionné est calculée en divisant le nombre de partitions importantes terminées par le nombre total de partitions importantes.
ROWS_PROCESSED INT64 Nombre de lignes traitées jusqu'à présent, mis à jour à la fin de chaque partition.
START_TIMESTAMP TIMESTAMP Limite supérieure de l'heure de début d'un LMD partitionné.
LAST_UPDATE_TIMESTAMP TIMESTAMP Dernier code temporel correspondant à la progression du LMD partitionné. Mise à jour à la fin d'une partition.

Exemples de requêtes

Vous pouvez exécuter les exemples d'instructions SQL suivants à l'aide de la méthode client les bibliothèques, Google Cloud CLI, ou Console Google Cloud :

Répertorier les requêtes en cours les plus anciennes

La requête suivante renvoie une liste des LMD partitionnés en cours d'exécution, triés en fonction du nombre de au moment de la requête.

SELECT text,
       session_id,
       num_partitions_total,
       num_partitions_complete,
       num_trivial_partitions_complete,
       progress,
       rows_processed,
       start_timestamp,
       last_update_timestamp
FROM spanner_sys.active_partitioned_dmls
ORDER BY start_timestamp ASC;
texte session_id num_partitions_total num_partitions_complete num_trivial_partitions_complete progression rows_processed start_timestamp last_update_timestamp
METTRE À JOUR Concerts SET VenueId = \'incroyable lieu\' WHERE SingerId < 900000 5bd37a99-200c-5d2e-9021-15d0dbbd97e6 27 15 3 50 % 2398654 21-01-2024 15:56:30.498744-08:00 22-01-2024 15:56:39.049799-08:00
UPDATE Singers SET LastName = NULL WHERE LastName = &#39;&#39; 0028284f-0190-52f9-b396-aa588e034806 8 4 4 00,00% 0 22-01-2024 15:55:18.498744-08:00 22-01-2024 15:56:28.049799-08:00
DELETE from Singers WHERE SingerId > 1000000 0071a85e-7e5c-576b-8a17-f9bc3d157eea 8 4 3 20,00% 238654 22-01-2024 15:56:30.498744-08:00 22-01-2024 15:56:19.049799-08:00
METTRE À JOUR LES CHAÎNES SET MarketingBudget = 1000 WHERE true 036097a9-91d4-566a-a399-20c754eabdc2 8 5 0 62,50% 238654 22-01-2024 15:57:47.498744-08:00 22-01-2024 15:57:39.049799-08:00

Limites

L'utilisation de la table SPANNER_SYS.ACTIVE_PARTITIONED_DMLS présente les caractéristiques suivantes : Limites:

  • Les résultats pour PROGRESS, ROWS_PROCESSED et LAST_UPDATE_TIMESTAMP sont incrémentées aux limites de partition terminées, de sorte que le LMD partitionné peut continuer à mettre à jour les lignes alors que les valeurs de ces trois champs restent les mêmes.

  • S'il y a des millions de partitions dans un LMD partitionné, la valeur de il est possible que la colonne PROGRESS ne capture pas toute la progression incrémentielle. Utilisez NUM_PARTITIONS_COMPLETE et NUM_TRIVIAL_PARTITIONS_COMPLETE pour indiquer des progrès plus précis.

  • Si vous annulez un LMD partitionné à l'aide d'une requête RPC, la classe annulée LMD partitionné peut toujours apparaître dans la table. Si vous annulez une session LMD utilisant la suppression de session, il est immédiatement retiré de la table. Pour en savoir plus, consultez la section Supprimer l'ID de session.

Utiliser les données des requêtes LMD partitionnées actives pour résoudre les problèmes d'utilisation élevée du processeur

Statistiques sur les requêtes et statistiques sur les transactions fournissent des informations utiles lors du dépannage de la latence d'une base de données Spanner. Ces outils fournissent des informations sur les requêtes déjà terminées. Cependant, il est parfois nécessaire de savoir ce qui est en cours d'exécution dans le système. Par exemple, supposons que le processeur est élevée, et vous souhaitez répondre aux questions suivantes.

  • Combien de LMD partitionnés sont exécutés actuellement ?
  • Que sont ces LMD partitionnés ?
  • Combien de ces LMD partitionnés s'exécutent depuis longtemps ?
  • Quelle session exécute la requête ?

Si vous avez des réponses aux questions précédentes, vous pouvez décider de prendre les mesures suivantes action.

  • Supprimer la session qui exécute la requête pour une résolution immédiate.
  • Réduire la fréquence d'un LMD partitionné.

Dans le tutoriel suivant, nous allons examiner les LMD partitionnés actifs et déterminer les mesures à prendre, le cas échéant.

Récupérer un résumé des LMD partitionnés actifs

Dans notre exemple de scénario, nous remarquons une utilisation du processeur supérieure à la normale. Nous décidons donc de exécutez la requête suivante pour obtenir le nombre de LMD partitionnés actifs.

SELECT count(*) as active_count
FROM spanner_sys.active_partitioned_dmls;

La requête produit le résultat suivant.

active_count
22

Répertorier les deux plus anciens LMD partitionnés en cours d'exécution

Nous pouvons ensuite exécuter une requête pour trouver plus d'informations sur les 2 premières images exécutant des LMD partitionnés, triés par l'heure de début du LMD partitionné.

SELECT text,
       session_id,
       num_partitions_total,
       num_partitions_complete,
       num_trivial_partitions_complete,
       progress,
       rows_processed,
       start_timestamp,
       last_update_timestamp
FROM spanner_sys.active_partitioned_dmls
ORDER BY start_timestamp ASC LIMIT 2;
texte session_id num_partitions_total num_partitions_complete num_trivial_partitions_complete progression rows_processed start_timestamp last_update_timestamp
METTRE À JOUR Concerts SET VenueId = \'incroyable lieu\' WHERE SingerId < 900000 5bd37a99-200c-5d2e-9021-15d0dbbd97e6 27 15 3 50 % 2398654 21-01-2024 15:56:30.498744-08:00 22-01-2024 15:56:39.049799-08:00
UPDATE Singers SET LastName = NULL WHERE LastName = &#39;&#39; 0028284f-0190-52f9-b396-aa588e034806 8 4 4 00,00% 0 22-01-2024 15:55:18.498744-08:00 22-01-2024 15:56:28.049799-08:00

Annuler une requête coûteuse

Nous avons trouvé un LMD partitionné qui s'exécute depuis des jours et ne progresse pas. Nous pouvons Exécutez donc la commande gcloud spanner databases sessions delete suivante pour supprimer la session à l'aide de l'ID de session qui annule le LMD partitionné.

gcloud spanner databases sessions delete\
   5bd37a99-200c-5d2e-9021-15d0dbbd97e6 \
    --database=singer_db --instance=test-instance

Étape suivante