Spanner bietet die folgenden integrierten Tabellen:
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: Hier werden die Größen Ihrer Tabellen und Indexe in Ihren Datenbanken aufgeführt.SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: Hier werden die Größen Ihrer Tabellen und Indexe in Ihren Datenbanken für jede Standortgruppe aufgelistet.
Die Tabellengröße wird in Byte angegeben. Tabellengrößen umfassen Datenversionen. Mit diesen integrierten Tabellen können Sie die Größe Ihrer Tabellen und Indexe im Zeitverlauf überwachen. Sie können auch die Größe Ihrer Indexe überwachen, wenn Sie sie erstellen, löschen und ändern (wenn Sie weitere Zeilen in den Index einfügen oder neue Spalten hinzufügen). Sie können sich auch die Größe Ihrer Änderungsstreamtabellen ansehen.
Der Datenbankspeicher kann mit dem Messwert für den Gesamtdatenbankspeicher überwacht werden.
Sie können die Aufschlüsselung des Datenbankspeichers mit SPANNER_SYS.TABLE_SIZES_STATS_1HOUR und SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR aufrufen.
Auf Statistiken zu Tabellengrößen zugreifen
Spanner stellt die Statistiken zu Tabellengrößen im Schema SPANNER_SYS bereit. Sie können auf folgende Weise auf SPANNER_SYS-Daten zugreifen:
Eine Spanner Studio-Datenbankseite in der Google Cloud Console.
Mit dem Befehl
gcloud spanner databases execute-sql.Die Methode
executeSqloderexecuteStreamingSql.
Die folgenden von Spanner bereitgestellten Methoden für einzelne Lesevorgänge unterstützen SPANNER_SYS nicht:
- Starken Lesevorgang aus einer einzelnen Zeile oder mehreren Zeilen in einer Tabelle durchführen
- Lesevorgang veralteter Daten aus einer oder mehreren Zeilen in einer Tabelle ausführen.
- Aus einer einzelnen Zeile oder mehreren Zeilen in einem sekundären Index lesen
TABLE_SIZES_STATS_1HOUR
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR enthält die Größen aller Tabellen in Ihrer Datenbank, sortiert nach interval_end. Die Intervalle basieren auf Uhrzeiten und enden zur vollen Stunde. Intern erfasst Cloud Spanner alle 5 Minuten Daten von allen Servern und stellt sie kurz darauf in der Tabelle TABLE_SIZES_STATS_1HOUR zur Verfügung. Die Daten werden dann für jede Stunde gemittelt. Beispiel: Um 11:59:30 Uhr zeigt TABLE_SIZES_STATS_1HOUR die durchschnittlichen Tabellengrößen aus dem Intervall von 10:00:00 Uhr bis 10:59:59 Uhr an.
Tabellenschema
| Spaltenname | Typ | Beschreibung |
|---|---|---|
INTERVAL_END |
TIMESTAMP |
Ende des Zeitintervalls, in dem die Tabellengrößen erfasst wurden. |
TABLE_NAME |
STRING |
Name der Tabelle oder des Index. |
USED_BYTES |
FLOAT64 |
Zeilenbasierter Speicher, der von der Tabelle oder dem Index verwendet wird, in Byte. |
USED_SSD_BYTES |
FLOAT64 |
SSD-zeilenbasierter Speicher, der von der Tabelle oder dem Index verwendet wird, in Byte. |
USED_HDD_BYTES |
FLOAT64 |
HDD-zeilenbasierter Speicher, der von der Tabelle oder dem Index in Byte verwendet wird. |
COLUMNAR_USED_BYTES |
FLOAT64 |
Spaltenspeicher, der von der Tabelle oder dem Index verwendet wird, in Byte. |
COLUMNAR_USED_SSD_BYTES |
FLOAT64 |
Spaltenbasierter SSD-Speicher, der von der Tabelle oder dem Index verwendet wird, in Byte. |
COLUMNAR_USED_HDD_BYTES |
FLOAT64 |
Spaltenbasierter HDD-Speicher, der von der Tabelle oder dem Index verwendet wird, in Byte. |
COLUMNAR_COVERAGE_RATIO |
FLOAT64 |
Das Verhältnis von spaltenbasiert formatierten Daten zu den Gesamtdaten für eine Tabelle oder einen Index mit aktivierter spaltenbasierter Richtlinie. Die Werte reichen von 0.0 bis 1.0. |
COLUMNAR_SSD_COVERAGE_RATIO |
FLOAT64 |
Das Verhältnis von SSD-Daten im Spaltenformat zu den gesamten SSD-Daten für eine Tabelle oder einen Index mit aktivierter Spaltenrichtlinie. Die Werte reichen von 0.0 bis 1.0. |
COLUMNAR_HDD_COVERAGE_RATIO |
FLOAT64 |
Das Verhältnis von HDD-Daten im Spaltenformat zu den gesamten HDD-Daten für eine Tabelle oder einen Index mit aktivierter Spaltenrichtlinie. Die Werte reichen von 0.0 bis 1.0. |
Beispielabfragen
Dieser Abschnitt enthält mehrere SQL-Beispielanweisungen, mit denen Statistiken zur aggregierten Tabellengröße abgerufen werden. Sie können diese SQL-Anweisungen mit den Clientbibliotheken, der gcloud spanner oder der Google Cloud Console ausführen.
Die vier größten Tabellen und Indexe für das letzte Intervall abfragen
Die folgende Abfrage gibt die vier größten Tabellen und Indexe für das letzte Intervall zurück:
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;
Screenshot: Ausgabe der Abfrage
| 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 |
Trend der Abfragegröße für eine bestimmte Tabelle oder einen bestimmten Index in den letzten 24 Stunden
Die folgende Abfrage gibt die Größe der Tabelle in den letzten 24 Stunden zurück:
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;
Wobei:
table_namemuss eine vorhandene Tabelle oder ein vorhandener Index in der Datenbank sein.
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;
Wobei:
table_namemuss eine vorhandene Tabelle oder ein vorhandener Index in der Datenbank sein.
Screenshot: Ausgabe der Abfrage
| 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 |
Nutzung und Abdeckung des Spaltenspeichers für das letzte Intervall abfragen
Die folgende Abfrage gibt die zeilenbasierte Speichergröße, die spaltenbasierte Speichergröße und das spaltenbasierte Abdeckungsverhältnis für Tabellen und Indexe im letzten Intervall zurück:
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;
Screenshot: Ausgabe der Abfrage
| 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 |
Spaltenspeicher und Abdeckungstrend für eine bestimmte Tabelle oder einen bestimmten Index für die letzten 24 Stunden abfragen
Die folgende Abfrage gibt die Größe des spaltenbasierten Speichers und die Abdeckungsquote für eine bestimmte Tabelle oder einen bestimmten Index in den letzten 24 Stunden zurück:
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;
Wobei:
table_namemuss eine vorhandene Tabelle oder ein vorhandener Index in der Datenbank sein.
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;
Wobei:
table_namemuss eine vorhandene Tabelle oder ein vorhandener Index in der Datenbank sein.
Screenshot: Ausgabe der Abfrage
| 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 enthält die Größen aller Tabellen in Ihrer Datenbank, sortiert nach interval_end, für jede Lokalisierungsgruppe. Die Intervalle basieren auf der Uhrzeit und enden zur vollen Stunde. Intern erfasst Cloud Spanner alle 5 Minuten Daten von allen Servern und stellt sie kurz danach in der Tabelle TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR zur Verfügung. Die Daten werden dann für jede Stunde gemittelt. Beispiel: Um 11:59:30 Uhr zeigt TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR die durchschnittlichen Tabellengrößen für jede Standortgruppe aus dem Intervall von 10:00:00 Uhr bis 10:59:59 Uhr an.
Tabellenschema
| Spaltenname | Typ | Beschreibung |
|---|---|---|
INTERVAL_END |
TIMESTAMP |
Ende des Zeitintervalls, in dem die Tabellengrößen erfasst wurden. |
TABLE_NAME |
STRING |
Name der Tabelle oder des Index. |
LOCALITY_GROUP |
STRING |
Name der Standortgruppe. |
USED_BYTES |
FLOAT64 |
Tabellengröße in Byte. |
USED_SSD_BYTES |
FLOAT64 |
Von der Tabelle verwendeter SSD-Speicher in Byte. |
USED_HDD_BYTES |
FLOAT64 |
Von der Tabelle verwendeter HDD-Speicher in Byte. |
Datenaufbewahrung
Spanner speichert Daten für SPANNER_SYS.TABLE_SIZES_STATS_1HOUR mindestens für Intervalle, die die letzten 30 Tage abdecken.
Nächste Schritte
- Weitere Informationen zu Tools zur Selbstbeobachtung
- Mehr über die weiteren Informationen erfahren, die Spanner für jede Datenbank in den Informationsschematabellen der Datenbank speichert
- SQL-Best-Practices für Spanner
- Hohe CPU-Auslastung untersuchen
- Informationen zur spaltenbasierten Engine
- Spaltenbasierte Engine überwachen