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 des tables incluent les versions des données. Vous pouvez utiliser ces tables intégrées pour surveiller la taille de vos tables et de vos 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 des lignes supplémentaires dans l'index ou lorsque vous y ajoutez des colonnes). Vous pouvez également examiner 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 du 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 de 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 console Google Cloud .
La commande
gcloud spanner databases execute-sql.La 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 les tailles de toutes les tables de votre base de données, triées par interval_end. Les intervalles sont basés sur les heures de l'horloge et se terminent à l'heure pile. En interne, toutes les cinq minutes, Spanner collecte les 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 pour chaque heure. Par exemple, à 11h59m30s, TABLE_SIZES_STATS_1HOUR affiche les tailles moyennes des tables de l'intervalle 10h00m00s à 10h59m59s.
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 |
Espace de stockage basé sur des lignes utilisé par la table ou l'index, en octets. |
USED_SSD_BYTES |
FLOAT64 |
Espace de stockage SSD basé sur les lignes utilisé par la table ou l'index, en octets. |
USED_HDD_BYTES |
FLOAT64 |
Espace de stockage HDD basé sur les lignes utilisé par table ou index, en octets. |
COLUMNAR_USED_BYTES |
FLOAT64 |
Stockage en colonnes utilisé par la table ou l'index, en octets. |
COLUMNAR_USED_SSD_BYTES |
FLOAT64 |
Espace de stockage SSD en colonnes utilisé par la table ou l'index, en octets. |
COLUMNAR_USED_HDD_BYTES |
FLOAT64 |
Espace de stockage HDD en colonnes utilisé par la table ou l'index, en octets. |
COLUMNAR_COVERAGE_RATIO |
FLOAT64 |
Rapport entre les données au format en colonnes et le total des données d'une table ou d'un index pour lequel la règle en colonnes est activée. Les valeurs sont comprises entre 0.0 et 1.0. |
COLUMNAR_SSD_COVERAGE_RATIO |
FLOAT64 |
Rapport entre les données SSD au format colonne et le total des données SSD pour une table ou un index pour lequel la règle de stockage en colonnes est activée. Les valeurs sont comprises entre 0.0 et 1.0. |
COLUMNAR_HDD_COVERAGE_RATIO |
FLOAT64 |
Rapport entre les données HDD au format colonnaire et le total des données HDD pour une table ou un index pour lesquels la règle colonnaire est activée. Les valeurs sont comprises entre 0.0 et 1.0. |
Exemples de requêtes
Cette section inclut plusieurs exemples d'instructions SQL qui récupèrent des statistiques sur la taille des tables agrégées. Vous pouvez exécuter ces instructions SQL à l'aide des bibliothèques clientes, de gcloud spanner ou de la consoleGoogle Cloud .
Interroger les quatre tables et index les plus volumineux pour l'intervalle le plus récent
La requête suivante renvoie les quatre tables et index les plus volumineux pour l'intervalle le plus récent :
SELECT interval_end,
table_name,
used_bytes + columnar_used_bytes AS total_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 total_used_bytes DESC
LIMIT 4;
Sortie de la requête
| interval_end | table_name | total_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 |
Tendance de la taille des requêtes pour une table ou 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 + columnar_used_bytes AS total_used_bytes
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
AND table_name = "<var>table_name</var>"
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 + columnar_used_bytes AS total_used_bytes
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
AND table_name = '<var>table_name</var>'
ORDER BY interval_end DESC;
Où :
table_namedoit être une table ou un index existant dans la base de données.
Sortie de la requête
| interval_end | total_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 |
Interroger l'utilisation de l'espace de stockage en colonnes et la couverture pour l'intervalle le plus récent
La requête suivante renvoie la taille de stockage basée sur les lignes, la taille de stockage en colonnes et le taux de couverture en colonnes pour les tables et les index de l'intervalle le plus récent :
GoogleSQL
SELECT interval_end,
table_name,
used_bytes,
columnar_used_bytes,
columnar_coverage_ratio
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
SELECT MAX(interval_end)
FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY columnar_used_bytes DESC;
PostgreSQL
SELECT interval_end,
table_name,
used_bytes,
columnar_used_bytes,
columnar_coverage_ratio
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
SELECT MAX(interval_end)
FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY columnar_used_bytes DESC;
Sortie de la requête
| interval_end | table_name | used_bytes | columnar_used_bytes | columnar_coverage_ratio |
|---|---|---|---|---|
2022-11-15 13:00:00-07:00 |
order_item |
45371664 |
15123888 |
0.95 |
2022-11-15 13:00:00-07:00 |
orders |
10012500 |
3337500 |
0.85 |
2022-11-15 13:00:00-07:00 |
item_inventory |
2094549 |
0 |
0 |
2022-11-15 13:00:00-07:00 |
customer |
870000 |
0 |
0 |
Interroger le stockage en colonnes et la tendance de couverture d'une table ou d'un index spécifique au cours des dernières 24 heures
La requête suivante renvoie la taille de stockage en colonnes et le taux de couverture d'une table ou d'un index spécifique au cours des dernières 24 heures :
GoogleSQL
SELECT interval_end,
columnar_used_bytes,
columnar_coverage_ratio
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
AND table_name = "<var>table_name</var>"
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,
columnar_used_bytes,
columnar_coverage_ratio
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
AND table_name = '<var>table_name</var>'
ORDER BY interval_end DESC;
Où :
table_namedoit être une table ou un index existant dans la base de données.
Sortie de la requête
| interval_end | columnar_used_bytes | columnar_coverage_ratio |
|---|---|---|
2022-11-15 13:00:00-07:00 |
3337500 |
0.85 |
2022-11-15 12:00:00-07:00 |
3337500 |
0.85 |
2022-11-15 11:00:00-07:00 |
3140000 |
0.8 |
2022-11-15 10:00:00-07:00 |
2945000 |
0.75 |
2022-11-15 09:00:00-07:00 |
2750000 |
0.7 |
2022-11-15 08:00:00-07:00 |
2355000 |
0.6 |
TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR contient les tailles de toutes les tables de votre base de données, triées par interval_end, pour chaque groupe de localité. Les intervalles sont basés sur l'heure de l'horloge et se terminent à l'heure pile. En interne, toutes les cinq minutes, Spanner collecte les 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 pour chaque heure. Par exemple, à 11h59m30s, TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR affiche les tailles moyennes des tables pour chaque groupe de localités de l'intervalle 10h00m00s - 10h59m59s.
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 table, en octets. |
USED_HDD_BYTES |
FLOAT64 |
Espace de stockage HDD utilisé par table, en octets. |
Conservation des données
Au minimum, Spanner conserve les données de SPANNER_SYS.TABLE_SIZES_STATS_1HOUR pour les intervalles couvrant les 30 derniers jours.
Étapes suivantes
- Découvrez d'autres outils d'introspection.
- Découvrez les autres informations que Spanner stocke pour chaque base de données dans les tables de schéma d'informations de la base de données.
- En savoir plus sur les bonnes pratiques SQL pour Spanner.
- En savoir plus sur l'analyse d'une utilisation élevée du processeur.
- Apprenez-en davantage sur le moteur de données en colonnes.
- Découvrez comment surveiller le moteur de données en colonnes.