Spanner bietet die folgenden eingebundenen Tabellen:
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: enthält die Größen Ihrer Tabellen und Indexe in Ihren Datenbanken.SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: enthält die Größen Ihrer Tabellen und Indexe in Ihren Datenbanken für jede Lokalitätsgruppe.
Die Tabellengröße wird in Byte angegeben. Tabellengrößen umfassen Datenversionen. Mit diesen eingebundenen Tabellen können Sie die Größen Ihrer Tabellen und Indexe im Zeitverlauf beobachten. Sie können auch die Größen Ihrer Indexe beobachten, wenn Sie sie erstellen, löschen und ändern (z. B. wenn Sie weitere Zeilen in den Index einfügen oder neue Spalten hinzufügen). Außerdem können Sie sich auch die Größen Ihrer Änderungsstreamtabellen ansehen.
Die Datenbankspeichernutzung kann mit dem Messwert „Gesamtdatenbankspeicher“ beobachtet werden.
Die Aufschlüsselung des Datenbankspeichers finden Sie in SPANNER_SYS.TABLE_SIZES_STATS_1HOUR und SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR.
Statistiken zu Tabellengrößen aufrufen
Spanner stellt die Statistiken zu Tabellengrößen im Schema SPANNER_SYS bereit. Sie haben folgende Möglichkeiten, auf SPANNER_SYS-Daten zuzugreifen:
Die Seite „Spanner Studio“ einer Datenbank in der Google Cloud Console.
Der Befehl
gcloud spanner databases execute-sql.Die
executeSqloder dieexecuteStreamingSqlMethode.
Die folgenden von Spanner bereitgestellten Einzellesemethoden unterstützen SPANNER_SYS nicht:
- Starken Lesevorgang aus einer einzelnen Zeile oder mehreren Zeilen in einer Tabelle durchführen
- Lesevorgang veralteter Daten aus einer einzelnen Zeile oder mehreren Zeilen in einer Tabelle durchfü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 der Uhrzeit und enden zur vollen Stunde. Intern sammelt 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 pro Stunde gemittelt. Um 11:59:30 Uhr zeigt TABLE_SIZES_STATS_1HOUR beispielsweise die durchschnittlichen Tabellengrößen aus dem Intervall von 10:00:00 Uhr bis 10:59:59 Uhr.
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 |
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. |
Beispielabfragen
Dieser Abschnitt enthält mehrere Beispiel-SQL-Anweisungen, die zusammengefasste Statistiken zu Tabellengrößen abrufen. Sie können diese SQL-Anweisungen mit den Clientbibliotheken, mit gcloud spanner oder mit 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
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;
Screenshot: Ausgabe der Abfrage
| 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 |
Größentrend für eine bestimmte Tabelle oder einen bestimmten Index in den letzten 24 Stunden abfragen
Die folgende Abfrage gibt die Größe der Tabelle in den letzten 24 Stunden zurück:
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;
Wobei:
table_namemuss eine vorhandene Tabelle oder ein vorhandener Index in der Datenbank sein.
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;
Wobei:
table_namemuss eine vorhandene Tabelle oder ein vorhandener Index in der Datenbank sein.
Screenshot: Ausgabe der Abfrage
| 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 enthält die Größen aller Tabellen in Ihrer Datenbank, sortiert nach interval_end, für jede Lokalitätsgruppe. Die Intervalle basieren auf der Uhrzeit und enden zur vollen Stunde. Intern sammelt Spanner alle 5 Minuten Daten von allen Servern und stellt sie kurz darauf in der Tabelle TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR zur Verfügung. Die Daten werden dann pro Stunde gemittelt. Um 11:59:30 Uhr zeigt TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR beispielsweise die durchschnittlichen Tabellengrößen für jede Lokalitätsgruppe aus dem Intervall von 10:00:00 Uhr bis 10:59:59 Uhr.
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 Lokalitätsgruppe. |
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 der letzten 30 Tage.
Nächste Schritte
- Weitere Informationen zu anderen Tools zur Selbstbeobachtung.
- Mehr über die weiteren Informationen erfahren, die Spanner für jede Datenbank in den Informationsschema tabellen der Datenbank speichert
- Mehr über SQL-Best-Practices für Spanner
- Hohe CPU-Auslastung untersuchen