Spanner fournit les tables intégrées suivantes :
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: répertorie les tailles de vos tables et index dans vos bases de données.SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: répertorie les tailles de vos tables et index dans vos bases de données pour chaque groupe de localités.
La taille de la table est exprimée en octets. Les tailles de table incluent les versions de données. Vous pouvez utiliser ces tables intégrées pour surveiller la taille de vos tables et index au fil du temps. Vous pouvez également surveiller la taille de vos index lorsque vous les créez, les supprimez et les modifiez (lorsque vous insérez d'autres lignes dans l'index ou lorsque vous y ajoutez de nouvelles colonnes). De plus, vous pouvez également consulter la taille de vos tables de flux de modifications.
Vous pouvez surveiller l'espace de stockage de la base de données à l'aide de la métrique "Espace de stockage total de la base de données".
Vous pouvez afficher la répartition de l'espace de stockage de la base de données avec SPANNER_SYS.TABLE_SIZES_STATS_1HOUR et SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR.
Accéder aux statistiques sur la taille des tables
Spanner fournit les statistiques sur la taille des tables 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 Google Cloud console.
Commande
gcloud spanner databases execute-sql.Méthode
executeSqlouexecuteStreamingSql.
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.
TABLE_SIZES_STATS_1HOUR
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR contient la taille de toutes les tables de votre base de données, triées par interval_end. Les intervalles sont définis selon l'heure réelle et se terminent à l'heure juste. En interne, toutes les cinq minutes, Spanner collecte des données de tous les serveurs, puis les met à disposition dans la table TABLE_SIZES_STATS_1HOUR peu de temps après. Les données sont ensuite moyennées par heure. Par exemple, à 11h59min30, TABLE_SIZES_STATS_1HOUR affiche la taille moyenne des tables de l'intervalle 10h00min00 à 10h59min59.
Schéma de la table
| Nom de la colonne | Type | Description |
|---|---|---|
INTERVAL_END |
TIMESTAMP |
Fin de l'intervalle de temps pendant lequel les tailles de table ont été collectées. |
TABLE_NAME |
STRING |
Nom de la table ou de l'index. |
USED_BYTES |
FLOAT64 |
Taille de la table en octets. |
USED_SSD_BYTES |
FLOAT64 |
Espace de stockage SSD utilisé par la table en octets. |
USED_HDD_BYTES |
FLOAT64 |
Espace de stockage HDD utilisé par la table en octets. |
Exemples de requêtes
Cette section présente plusieurs exemples d'instructions SQL permettant d'extraire des statistiques globales sur la taille des tables. Vous pouvez exécuter ces instructions SQL à l'aide des bibliothèques clientes, de gcloud spannerou de la Google Cloud console.
Interroger les quatre plus grandes tables et index pour l'intervalle le plus récent
La requête suivante renvoie les quatre plus grandes tables et index pour l'intervalle le plus récent :
SELECT interval_end,
table_name,
used_bytes
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
SELECT MAX(interval_end)
FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY used_bytes DESC
LIMIT 4;
Résultat de la requête
| interval_end | table_name | used_bytes |
|---|---|---|
2022-11-15 13:00:00-07:00 |
order_item |
60495552 |
2022-11-15 13:00:00-07:00 |
orders |
13350000 |
2022-11-15 13:00:00-07:00 |
item_inventory |
2094549 |
2022-11-15 13:00:00-07:00 |
customer |
870000 |
Interroger la tendance de la taille d'une table ou d'un index spécifique au cours des dernières 24 heures
La requête suivante renvoie la taille de la table au cours des dernières 24 heures :
GoogleSQL
SELECT interval_end, used_bytes FROM spanner_sys.table_sizes_stats_1hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR) AND table_name = "table_name" ORDER BY interval_end DESC;
Où :
table_namedoit être une table ou un index existant dans la base de données.
PostgreSQL
SELECT interval_end, used_bytes FROM spanner_sys.table_sizes_stats_1hour WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR') AND table_name = 'table_name' ORDER BY interval_end DESC;
Où :
table_namedoit être une table ou un index existant dans la base de données.
Résultat de la requête
| interval_end | used_bytes |
|---|---|
2022-11-15 13:00:00-07:00 |
13350000 |
2022-11-15 12:00:00-07:00 |
13350000 |
2022-11-15 11:00:00-07:00 |
13350000 |
2022-11-15 10:00:00-07:00 |
13350000 |
2022-11-15 09:00:00-07:00 |
13350000 |
2022-11-15 08:00:00-07:00 |
12350000 |
2022-11-15 07:00:00-07:00 |
12350000 |
2022-11-15 06:00:00-07:00 |
12350000 |
2022-11-15 05:00:00-07:00 |
11350000 |
2022-11-15 04:00:00-07:00 |
11350000 |
2022-11-15 03:00:00-07:00 |
11350000 |
2022-11-15 02:00:00-07:00 |
11350000 |
2022-11-15 01:00:00-07:00 |
11350000 |
2022-11-15 00:00:00-07:00 |
10350000 |
2022-11-14 23:00:00-07:00 |
10350000 |
2022-11-14 22:00:00-07:00 |
10350000 |
2022-11-14 21:00:00-07:00 |
10350000 |
2022-11-14 20:00:00-07:00 |
10350000 |
2022-11-14 19:00:00-07:00 |
10350000 |
2022-11-14 18:00:00-07:00 |
10350000 |
2022-11-14 17:00:00-07:00 |
10350000 |
2022-11-14 16:00:00-07:00 |
10350000 |
2022-11-14 15:00:00-07:00 |
10350000 |
2022-11-14 14:00:00-07:00 |
10350000 |
2022-11-14 13:00:00-07:00 |
10350000 |
TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR contient la taille de toutes les tables de votre base de données, triées par interval_end, pour chaque groupe de localités. Les intervalles sont définis selon l'heure réelle et se terminent à l'heure juste. En interne, toutes les cinq minutes, Spanner collecte des données de tous les serveurs, puis les met à disposition dans la table TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR peu de temps après. Les données sont ensuite moyennées par heure. Par exemple, à 11h59min30, TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR affiche la taille moyenne des tables pour chaque groupe de localités de l'intervalle 10h00min00 à 10h59min59.
Schéma de la table
| Nom de la colonne | Type | Description |
|---|---|---|
INTERVAL_END |
TIMESTAMP |
Fin de l'intervalle de temps pendant lequel les tailles de table ont été collectées. |
TABLE_NAME |
STRING |
Nom de la table ou de l'index. |
LOCALITY_GROUP |
STRING |
Nom du groupe de localités. |
USED_BYTES |
FLOAT64 |
Taille de la table en octets. |
USED_SSD_BYTES |
FLOAT64 |
Espace de stockage SSD utilisé par la table en octets. |
USED_HDD_BYTES |
FLOAT64 |
Espace de stockage HDD utilisé par la table en octets. |
Conservation des données
Spanner conserve les données de SPANNER_SYS.TABLE_SIZES_STATS_1HOUR pendant au moins les intervalles couvrant les 30 jours précédents.
Étape suivante
- Découvrez d'autres outils d'introspection.
- Découvrez les autres informations stockées par Spanner pour chaque base de données dans les tables du schéma d'informations de cette base de données.
- Découvrez les bonnes pratiques SQL pour Spanner.
- En savoir plus sur l'investigation de l'utilisation élevée du processeur.