Spanner fournit des tables intégrées qui enregistrent les statistiques sur les opérations de lecture (ou d'interrogation), d'écriture et de suppression pour vos tables (y compris les tables de flux de modifications) et vos index. Les statistiques sur les opérations de table vous permettent d'effectuer les opérations suivantes :
Identifiez les tables dont le trafic d'écriture a augmenté en même temps que le stockage.
Identifiez les tables avec un trafic de lecture, d'écriture et de suppression inattendu.
Identifiez les tables les plus utilisées.
Lorsque vous interrogez une table ou écrivez dans celle-ci, le nombre d'opérations correspondant à la table est incrémenté de 1, quel que soit le nombre de lignes auxquelles vous accédez.
Vous pouvez surveiller les métriques globales des opérations par seconde d'une base de données à l'aide de Operations per second
, Operations per second by API method
et d'autres métriques associées dans vos graphiques Insights système.
Accéder aux statistiques sur les opérations de table
Spanner fournit les statistiques sur les opérations de table dans le schéma SPANNER_SYS
.Vous pouvez accéder aux données SPANNER_SYS
de différentes manières :
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.
Statistiques sur les opérations de table
Les tableaux suivants permettent de suivre les statistiques de lecture (ou de requête), d'écriture et de suppression de vos tables et index au cours d'une période donnée :
SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE
: opérations effectuées durant des intervalles d'une minuteSPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE
: opérations effectuées durant des intervalles de 10 minutesSPANNER_SYS.TABLE_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 sont définis selon l'heure réelle. Les intervalles d'une minute commencent toutes les minutes, les intervalles de 10 minutes débutent 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 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 pour toutes les tables de statistiques sur les opérations de table
Nom de la colonne | Type | Description |
---|---|---|
INTERVAL_END |
TIMESTAMP |
Fin de l'intervalle de temps au cours duquel les tailles de table 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 à partir de la table. |
WRITE_COUNT |
INT64 |
Nombre de requêtes écrivant dans la table. |
DELETE_COUNT |
INT64 |
Nombre de requêtes effectuant des suppressions dans la table. |
Si vous insérez des données dans votre base de données à l'aide de mutations, write_count
est incrémenté 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 read_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.TABLE_OPERATIONS_STATS_MINUTE
: intervalles couvrant les six heures précédentesSPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE
: intervalles couvrant les quatre derniers jours.SPANNER_SYS.TABLE_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 tables. Vous pouvez exécuter ces instructions SQL à l'aide des bibliothèques clientes ou de 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 avec le plus d'opérations de suppression pour 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 six dernières heures
GoogleSQL
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.
PostgreSQL
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.
PostgreSQL
SELECT interval_end, read_query_count, write_count, delete_count FROM spanner_sys.table_operations_stats_hour WHERE interval_end > spanner.timestamptz_subtract(now(), '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));
Étapes suivantes
Utilisez les statistiques sur la taille des tables pour déterminer la taille de vos tables et de vos index.
Découvrez d'autres outils d'introspection.
Explorez les bonnes pratiques SQL relatives à Spanner.