Statistiques sur les opérations de la table

Spanner fournit des tables intégrées qui enregistrent la lecture (ou la requête), écrire et supprimer des statistiques d'opérations pour vos tables (y compris les statistiques les tables de flux) et les index. Avec les statistiques d'opérations de table, vous pouvez suivantes:

  • Identifier les tables avec une augmentation du trafic en écriture correspondant à l'augmentation de l'espace de stockage.

  • Identifiez les tables avec du trafic inattendu de lecture, d'écriture et de suppression.

  • Identifiez les tables les plus utilisées.

Lorsque vous interrogez une table ou écrivez dans une table, le nombre d'opérations correspondant à l'objet la table s'incrémente d'une unité, quel que soit le nombre de lignes consultées.

Les métriques globales des opérations par seconde d'une base de données peuvent être surveillées avec Operations per second, Operations per second by API method et d'autres associées dans les Insights système graphiques.

Disponibilité

Spanner fournit les statistiques des opérations de table dans Schéma SPANNER_SYS. Les données SPANNER_SYS ne sont disponibles que via SQL de commande. Exemple :

  • Page Spanner Studio d'une base de données dans la console Google Cloud

  • La commande gcloud spanner databases execute-sql

  • L'API executeQuery

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

Statistiques sur les opérations de la table

Les tableaux suivants permettent d'effectuer le suivi des statistiques de lecture (ou de requête), d'écriture et de suppression de vos données tables et index au cours d'une période donnée:

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: opérations à intervalles d'une minute
  • SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: opérations effectuées à des intervalles de 10 minutes.
  • SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: opérations à intervalles d'une heure

Ces tables ont les propriétés suivantes :

  • Chaque table contient des données pour des intervalles de temps sans chevauchement de la longueur que spécifié par le nom de la table.

  • Les intervalles sont définis selon l'heure réelle. Les intervalles d'une minute commencent à la minute, 10 Les intervalles de minutes commencent toutes les 10 minutes à partir de l'heure, et toutes les heures les intervalles commencent dans l'heure.

    Par exemple, à 11:59:30, les intervalles les plus récents disponibles pour les requêtes SQL sont les suivants :

    • 1 minute : 11:58:00 – 11:58:59
    • 10 minutes : 11:40:00 – 11:49:59
    • 1 heure : 10:00:00 – 10:59:59

Schéma de toutes les tables de statistiques des opérations de table

Nom de la colonne Type Description
INTERVAL_END TIMESTAMP Fin de l'intervalle de temps au cours duquel les tailles des tables ont été collectées.
TABLE_NAME STRING Nom de la table ou de l'index.
READ_QUERY_COUNT INT64 Nombre de requêtes ou de lectures de la table.
WRITE_COUNT INT64 Nombre de requêtes écrites dans la table.
DELETE_COUNT INT64 Nombre de requêtes effectuant des suppressions sur la table.

Si vous insérez des données dans votre base de données à l'aide de mutations, le write_count incrémente de 1 pour chaque table à laquelle l'instruction "insert" a accès. De plus, une requête qui accède à un index, sans analyser la table sous-jacente, incrémente la valeur read_query_count de l'index.

Conservation des données

Spanner conserve au minimum les données de chaque table pour les éléments suivants : périodes:

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: intervalles couvrant les six précédents heures.

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: intervalles couvrant le précédent 4 jours.

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: intervalles couvrant les 30 derniers jours.

Exemples de requêtes

Cette section contient plusieurs exemples d'instructions SQL qui récupèrent des données agrégées les statistiques d'opérations de la table. Vous pouvez exécuter ces instructions SQL à l'aide du bibliothèques clientes gcloud spanner.

Interroger les tables et les index avec le plus d'opérations d'écriture pour l'intervalle le plus récent

    SELECT interval_end,
          table_name,
          write_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY write_count DESC;
  

Interroger les tables et les index ayant le plus d'opérations de suppression au cours de l'intervalle le plus récent

    SELECT interval_end,
          table_name,
          delete_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY delete_count DESC;
  

Interroger les tables et les index avec le plus d'opérations de lecture et de requête pour l'intervalle le plus récent

    SELECT interval_end,
          table_name,
          read_query_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY read_query_count DESC;
  

Interroger l'utilisation d'une table au cours des 6 dernières heures

    SELECT interval_end,
           read_query_count,
           write_count,
           delete_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE table_name = table_name
    ORDER BY interval_end DESC;
    

Où :

  • table_name doit être une table ou un index existant dans la base de données.

Interroger l'utilisation d'une table au cours des 14 derniers jours

GoogleSQL

SELECT interval_end,
       read_query_count,
       write_count,
       delete_count
FROM spanner_sys.table_operations_stats_hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY)
      AND table_name = table_name
ORDER BY interval_end DESC;

Où :

  • table_name doit être une table ou un index existant dans la base de données.

Interroger les tables et les index qui n'ont pas été utilisés au cours des dernières 24 heures

GoogleSQL

(SELECT t.table_name
 FROM  information_schema.tables AS t
 WHERE t.table_catalog = ""
   AND t.table_schema = ""
   AND t.table_type = "BASE TABLE"
 UNION ALL
 SELECT cs.change_stream_name
 FROM information_schema.change_streams cs
 WHERE cs.change_stream_catalog = ""
   AND cs.change_stream_schema = ""
 UNION ALL
 SELECT idx.index_name
 FROM information_schema.indexes idx
 WHERE idx.index_type = "INDEX"
   AND idx.table_catalog = ""
   AND idx.table_schema = "")
 EXCEPT ALL
(SELECT  DISTINCT(table_name)
 FROM spanner_sys.table_operations_stats_hour
 WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR));

Étape suivante