Spanner fournit des tables intégrées qui enregistrent les statistiques des opérations de lecture, de requête et d'écriture pour les colonnes de vos tables. Les statistiques sur les opérations de colonne vous permettent d'effectuer les actions suivantes :
Identifiez les colonnes dont le trafic de lecture, de requête et d'écriture est inattendu.
Identifier les colonnes très utilisées.
Lorsque vous interrogez une colonne ou écrivez dans celle-ci, Spanner incrémente de un le nombre d'opérations correspondant pour cette colonne, quel que soit le nombre de lignes auxquelles vous accédez.
Vous pouvez surveiller l'utilisation globale d'une base de données à l'aide de métriques qui mesurent les opérations par seconde, les opérations par seconde par méthode d'API et d'autres métriques associées dans vos graphiques Insights système.
Accéder aux statistiques sur les opérations de colonne
Spanner fournit les statistiques sur les opérations de colonne dans le schéma SPANNER_SYS
. Vous pouvez utiliser les éléments suivants pour accéder aux données SPANNER_SYS
:
Page Spanner Studio d'une base de données dans la console Google Cloud
La commande
gcloud spanner databases execute-sql
La méthode
executeSql
ouexecuteStreamingSql
.
Les méthodes de lecture unique suivantes fournies par Spanner ne sont pas compatibles avec SPANNER_SYS
:
- effectuer une lecture forte à partir d'une ou de plusieurs lignes d'une table ;
- effectuer une lecture non actualisée à partir d'une ou de plusieurs lignes d'une table ;
- lire à partir d'une ou de plusieurs lignes d'un index secondaire.
Pour en savoir plus, consultez Méthodes de lecture unique.
Statistiques sur les opérations de colonne
Les tableaux suivants permettent de suivre les statistiques de lecture, de requête et d'écriture sur vos colonnes au cours d'une période donnée :
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: opérations effectuées durant des intervalles d'une minuteSPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: opérations effectuées durant des intervalles de 10 minutesSPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: opérations effectuées durant des intervalles d'une heure
Ces tables ont les propriétés suivantes :
Chaque table contient les données correspondant à des intervalles de temps sans chevauchement de la durée spécifiée par le nom de la table.
Les intervalles d'une minute commencent toutes les minutes, les intervalles de 10 minutes commencent toutes les 10 minutes à partir de l'heure juste, et les intervalles d'une heure commencent toutes les heures.
Par exemple, à 11:59:30, les requêtes SQL peuvent accéder aux intervalles les plus récents 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 pour toutes les tables de statistiques sur les opérations de colonne
Nom de la colonne | Type | Description |
---|---|---|
INTERVAL_END |
TIMESTAMP |
Fin de l'intervalle de temps au cours duquel les statistiques d'utilisation des colonnes ont été collectées. |
TABLE_NAME |
STRING |
Nom de la table ou de l'index. |
COLUMN_NAME |
STRING |
Nom de la colonne. |
READ_COUNT |
INT64 |
Nombre de lectures à partir de la colonne. |
QUERY_COUNT |
INT64 |
Nombre de requêtes lisant la colonne. |
WRITE_COUNT |
INT64 |
Nombre de requêtes écrivant dans la table. |
IS_QUERY_CACHE_MEMORY_CAPPED |
BOOL |
Indique si la collecte de statistiques a été limitée en raison de la pression de la mémoire. |
Si vous insérez des données dans votre base de données à l'aide de mutations, Spanner incrémente WRITE_COUNT
de 1 pour chaque table à laquelle l'instruction d'insertion accède. De plus, une requête qui accède à un index sans analyser la table sous-jacente n'incrémente que QUERY_COUNT
sur l'index.
Conservation des données
Spanner conserve les données de chaque table pendant une durée minimale variable selon le type de table :
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: intervalles couvrant les six heures précédentes.SPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: intervalles couvrant les quatre derniers jours.SPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: intervalles couvrant les 30 derniers jours.
Exemples de requêtes
Cette section présente plusieurs exemples d'instructions SQL permettant d'extraire des statistiques globales sur les opérations sur les colonnes. Vous pouvez exécuter ces instructions SQL à l'aide des bibliothèques clientes ou de la Google Cloud CLI.
Interroger les colonnes de table avec le plus d'opérations d'écriture pour l'intervalle le plus récent
GoogleSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
Interroger les colonnes avec le plus d'opérations de requête pour l'intervalle le plus récent
GoogleSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
Interroger l'utilisation d'une colonne au cours des six dernières heures
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
Où :
table_name
doit être une table ou un index existant dans la base de données.column_name
doit être une colonne existante dans la table.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
Où :
table_name
doit être une table ou un index existant dans la base de données.column_name
doit être une colonne existante dans la table.
Interroger l'utilisation d'une colonne au cours des 14 derniers jours
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY) AND table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
Effectuez les remplacements suivants :
table_name
: nom de la table ou de l'index dans la base de données.column_name
: nom de la colonne dans le tableau.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > spanner.timestamptz_subtract(now(), '14 DAY') AND table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
Effectuez les remplacements suivants :
table_name
: nom de la table ou de l'index dans la base de données.column_name
: nom de la colonne dans le tableau.
Étapes suivantes
En savoir plus sur les autres tables de statistiques intégrées
Explorez les bonnes pratiques SQL relatives à Spanner.