Ansicht TABLE_STORAGE
Die Ansicht INFORMATION_SCHEMA.TABLE_STORAGE bietet einen aktuellen Snapshot der Speichernutzung für Tabellen und materialisierte Ansichten. Wenn Sie die Ansicht INFORMATION_SCHEMA.TABLE_STORAGE abfragen, wird im Ergebnis jede Tabelle oder materialisierte Ansicht für das aktuelle Projekt in einer eigenen Zeile dargestellt.
Die Daten in der Ansicht INFORMATION_SCHEMA.TABLE_STORAGE werden nicht in Echtzeit gespeichert und Aktualisierungen werden in der Regel um einige Sekunden bis zu einigen Minuten verzögert. Speicheränderungen, die nur durch den Partitions- oder Tabellenablauf oder durch Änderungen am Dataset-Zeitreisefenster verursacht werden, können bis zu einem Tag dauern, bis sie in der Ansicht INFORMATION_SCHEMA.TABLE_STORAGE angezeigt werden.
Wenn ein Dataset gelöscht wird, das mehr als 1.000 Tabellen enthält,
wird die Änderung in dieser Ansicht erst angezeigt, wenn das
Zeitreisefenster für das gelöschte
Dataset abgelaufen ist.
Mit Tabellenspeicheransichten können Sie Ihren aktuellen Speicherverbrauch mühelos beobachten und sehen, ob Ihr Speicher logische unkomprimierte Byte, physische komprimierte Byte oder Zeitreise-Byte verwendet. Diese Informationen können Ihnen bei Aufgaben wie der Planung des zukünftigen Wachstums und dem Verständnis der Aktualisierungsmuster für Tabellen helfen.
In den *_BYTES-Spalten enthaltene Daten
Die *_BYTES-Spalten in den Tabellenspeicheransichten enthalten Informationen zur Verwendung der Speicherbyte. Diese Informationen werden anhand der Speichernutzung für materialisierte Ansichten und der folgenden Tabellentypen bestimmt:
- Permanente Tabellen, die mit einer der unter Tabellen erstellen und verwenden beschriebenen Methoden erstellt wurden.
- Temporäre Tabellen, die in Sitzungen erstellt wurden. Diese Tabellen werden in Datasets mit generierten Namen wie "_c018003e063d09570001ef33ae401fad6ab92a6a" platziert.
- Temporäre Tabellen, die in Abfragen mit mehreren Anweisungen ("Scripts") erstellt wurden. Diese Tabellen werden in Datasets mit generierten Namen wie "_script72280c173c88442c3a7200183a50eeeaa4073719" platziert.
Im Abfrageergebnissecache gespeicherte Daten werden Ihnen nicht in Rechnung gestellt und sind daher nicht in den *_BYTES-Spaltenwerten enthalten.
Klone und Snapshots zeigen *_BYTES-Spaltenwerte so an, als wären sie vollständige Tabellen. Sie zeigen also nicht die Differenz zum von der Basistabelle verwendeten Speicher an, sodass es zu einer Überschätzung kommt. In Ihrer Rechnung wird diese Differenz bei der Speichernutzung korrekt berücksichtigt. Weitere Informationen zu den von Klonen und Snapshots gespeicherten und abgerechneten Deltabyte finden Sie in der Ansicht TABLE_STORAGE_USAGE_TIMELINE.
Abrechnung von Speicherprognosen
Um die monatliche Speicherabrechnung für ein Dataset zu schätzen, können Sie je nach verwendetem Dataset-Speicherabrechnungsmodell die logical- oder physical *_BYTES-Spalte in dieser Ansicht verwenden. Beachten Sie, dass dies nur eine grobe Schätzung ist. Die genauen Abrechnungsbeträge werden anhand der Nutzung durch die BigQuery-Speicherabrechnungsinfrastruktur berechnet und sind in Cloud Billing sichtbar.
Für Datasets, die ein logisches Abrechnungsmodell verwenden, können Sie Ihre monatlichen Speicherkosten so schätzen:
((ACTIVE_LOGICAL_BYTES-Wert / POW(1024, 3)) * Preis für aktive logische Byte) +
((LONG_TERM_LOGICAL_BYTES-Wert / POW(1024, 3)) * Preis für langfristige logische Byte)
Der ACTIVE_LOGICAL_BYTES-Wert einer Tabelle spiegelt die aktiven Byte wider, die derzeit von dieser Tabelle verwendet werden.
Für Datasets, die ein physisches Abrechnungsmodell verwenden, können Sie Ihre Speicherkosten so schätzen:
((ACTIVE_PHYSICAL_BYTES + FAIL_SAFE_PHYSICAL_BYTES-Wert / POW(1024, 3)) * Preis für aktive physische Byte) + ((LONG_TERM_PHYSICAL_BYTES-Wert / POW (1024, 3)) * Preis für langfristige physische Byte)
Der ACTIVE_PHYSICAL_BYTES-Wert einer Tabelle spiegelt die aktuell von dieser Tabelle verwendeten aktiven Byte plus die Byte wider, die für die Zeitreise für diese Tabelle verwendet werden.
Wenn Sie nur die aktiven Byte der Tabelle sehen möchten, subtrahieren Sie den TIME_TRAVEL_PHYSICAL_BYTES-Wert vom ACTIVE_PHYSICAL_BYTES-Wert.
Weitere Informationen finden Sie unter Speicherpreise.
Byte-Werte im Vergleich zu Abrechnungseinheiten
Die *_BYTES-Spalten in den Ansichten INFORMATION_SCHEMA.TABLE_STORAGE bieten einen Snapshot Ihres aktuellen Speicherverbrauchs in Byte. So erfahren Sie, wie viele Daten Sie zu diesem Zeitpunkt speichern.
Die BigQuery-Speicherabrechnung, wie sie in Ihren Cloud Billing-Berichten dargestellt wird, basiert jedoch nicht nur auf dieser momentanen Größe. Stattdessen wird die Abrechnung anhand der im Laufe der Zeit gespeicherten Datenmenge berechnet. Die Standardabrechnungseinheiten sind GiB-Monat oder TiB-Monat.
Wenn Sie beispielsweise 1 GiB für einen beliebigen vollen Kalendermonat speichern, ergibt sich eine Nutzung von 1 GiB-Monat, unabhängig davon, ob der Monat 28 bis 31 Tage hat. Ebenso wird die Speicherung von Daten für nur einen Teil des Monats anteilig berechnet. Wenn Sie 31 GiB für einen einzigen Tag in einem Monat mit 31 Tagen speichern, entspricht das etwa 1 GiB-Monat. Wenn Sie 28 GiB für einen einzigen Tag in einem Monat mit 28 Tagen speichern, entspricht das ebenfalls etwa 1 GiB-Monat.
Die Byte-Werte in INFORMATION_SCHEMA.TABLE_STORAGE sind zwar wichtige
Eingaben für die Schätzung potenzieller Kosten, aber in Ihrer tatsächlichen Rechnung wird die
kontinuierliche Berechnung von (bytes stored * duration stored) berücksichtigt. Die Werte aus dieser Ansicht stimmen voraussichtlich nicht direkt mit den Posten in Ihrem Abrechnungsbericht überein, die über den Abrechnungszeitraum aggregiert werden.
Ausführliche Informationen zur Berechnung der Speicherkosten finden Sie auf der Seite Speicherpreise.
Erforderliche Rollen
Um die Berechtigungen zu erhalten, die
Sie zum Abfragen der INFORMATION_SCHEMA.TABLE_STORAGE Ansicht benötigen,
bitten Sie Ihren Administrator, Ihnen die
BigQuery Metadata Viewer (roles/bigquery.metadataViewer)
IAM-Rolle für das Projekt zu gewähren.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Abfragen der Ansicht INFORMATION_SCHEMA.TABLE_STORAGE erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Zum Abfragen der Ansicht INFORMATION_SCHEMA.TABLE_STORAGE sind die folgenden Berechtigungen erforderlich:
-
bigquery.tables.get -
bigquery.tables.list
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Schema
Die Ansicht INFORMATION_SCHEMA.TABLE_STORAGE hat das folgende Schema:
| Spaltenname | Datentyp | Wert |
|---|---|---|
project_id |
STRING |
Die ID des Projekts, das das Dataset enthält. |
project_number |
INT64 |
Die Nummer des Projekts, das das Dataset enthält. |
table_catalog |
STRING |
Die ID des Projekts, das das Dataset enthält. |
table_schema |
STRING |
Der Name des Datasets, das die Tabelle oder materialisierte Ansicht enthält (auch als datasetId bezeichnet). |
table_name |
STRING |
Der Name der Tabelle oder materialisierten Ansicht (auch als tableId bezeichnet) |
creation_time |
TIMESTAMP |
Die Erstellungszeit der Tabelle. |
total_rows |
INT64 |
Die Gesamtzahl der Zeilen in der Tabelle oder der materialisierten Ansicht. |
total_partitions |
INT64 |
Die Anzahl der vorhandenen Partitionen in der Tabelle oder der materialisierten Ansicht. Nicht partitionierte Tabellen geben 0 zurück. |
total_logical_bytes |
INT64 |
Gesamtzahl der logischen (unkomprimierten) Byte in der Tabelle oder materialisierten Ansicht. |
active_logical_bytes |
INT64 |
Anzahl der logischen (unkomprimierten) Byte, die jünger als 90 Tage sind. |
long_term_logical_bytes |
INT64 |
Anzahl der logischen (unkomprimierten) Byte, die älter als 90 Tage sind. |
current_physical_bytes |
INT64 |
Gesamtzahl der physischen Byte für die aktuelle Speicherung der Tabelle in allen Partitionen. |
total_physical_bytes |
INT64 |
Gesamtzahl der physischen (komprimierten) Byte, die für die Speicherung verwendet werden, einschließlich aktiver, langfristiger und zeitübergreifender physischer Byte (gelöschte oder geänderte Daten) Byte. Ausfallsichere Byte (gelöschte oder geänderte Daten, die nach einem Zeitreisefenster Fenster aufbewahrt wurden) sind nicht enthalten. |
active_physical_bytes |
INT64 |
Anzahl der physischen (komprimierten) Byte unter 90 Tagen, einschließlich zeitübergreifender physischer Byte (gelöschte oder geänderte Daten). |
long_term_physical_bytes |
INT64 |
Anzahl der physischen (komprimierten) Byte, die älter als 90 Tage sind. |
time_travel_physical_bytes |
INT64 |
Anzahl der physischen (komprimierten) Byte, die vom zeitübergreifenden physischen Speicher verwendet wurden (gelöschte oder geänderte Daten). |
storage_last_modified_time |
TIMESTAMP |
Der Zeitpunkt, zu dem Daten in die Tabelle geschrieben wurden. `NULL` wird zurückgegeben
NULL wenn keine Daten vorhanden sind. |
deleted |
BOOLEAN |
Gibt an, ob die Tabelle gelöscht wird. |
table_type |
STRING |
Der Typ der Tabelle. Beispiel: BASE TABLE.
|
managed_table_type |
STRING |
Diese Spalte befindet sich im Vorschaumodus. Der verwaltete Typ der Tabelle. Beispiel:
NATIVE oder BIGLAKE.
|
fail_safe_physical_bytes |
INT64 |
Anzahl der physischen (komprimierten) Byte, die vom ausfallsicheren Speicher verwendet werden (gelöschte oder geänderte Daten). |
last_metadata_index_refresh_time |
TIMESTAMP |
Die Uhrzeit der letzten Aktualisierung des Metadatenindexes der Tabelle. |
table_deletion_reason |
STRING |
Grund für das Löschen der Tabelle, wenn das Feld deleted „true“ ist. Folgende
Werte sind möglich:
|
table_deletion_time |
TIMESTAMP |
Die Löschzeit der Tabelle. |
Aus Stabilitätsgründen empfehlen wir, die Spalten in Ihren Informationsschemaabfragen explizit aufzulisten, anstatt ein Platzhalterzeichen (SELECT *) zu verwenden. Wenn Sie die Spalten explizit auflisten, wird verhindert, dass Abfragen fehlschlagen, wenn sich das zugrunde liegende Schema ändert.
Bereich und Syntax
Für Abfragen dieser Ansicht muss ein Regions-Qualifier verwendet werden. In der folgenden Tabelle wird der Regionsbereich für diese Ansicht erläutert:
| Ansichtsname | Ressourcenbereich | Regionsbereich |
|---|---|---|
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE[_BY_PROJECT] |
Projektebene | REGION |
-
Optional:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet. -
REGION: ist ein beliebiger Dataset-Regionsname. Beispiel:`region-us`.
Im folgenden Beispiel wird gezeigt, wie Speicherinformationen für Tabellen in einem bestimmten Projekt und einer bestimmten Region zurückgegeben werden:
SELECT * FROM `myProject`.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
Im folgenden Beispiel wird gezeigt, wie Speicherinformationen für Tabellen im aktuellen Projekt in einer bestimmten Region zurückgegeben werden:
SELECT * FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT;
Beispiele
Beispiel 1:
Das folgende Beispiel zeigt die Gesamtzahl der logischen Byte, die für das aktuelle Projekt in Rechnung gestellt werden.
SELECT SUM(total_logical_bytes) AS total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
Das Ergebnis sieht etwa so aus:
+---------------------+ | total_logical_bytes | +---------------------+ | 971329178274633 | +---------------------+
Beispiel 2:
Im folgenden Beispiel werden verschiedene Speicherbyte in GiB auf Datasetebene für das aktuelle Projekt angezeigt.
SELECT table_schema AS dataset_name, -- Logical SUM(total_logical_bytes) / power(1024, 3) AS total_logical_gib, SUM(active_logical_bytes) / power(1024, 3) AS active_logical_gib, SUM(long_term_logical_bytes) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(total_physical_bytes) / power(1024, 3) AS total_physical_gib, SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE WHERE table_type ='BASE TABLE' GROUP BY table_schema ORDER BY dataset_name
Beispiel 3:
Das folgende Beispiel zeigt, wie Sie die Preisdifferenz pro Dataset zwischen logischen und physischen Abrechnungsmodellen für die nächsten 30 Tage prognostizieren. In diesem Beispiel wird davon ausgegangen, dass die zukünftige Speichernutzung in den nächsten 30 Tagen ab dem Zeitpunkt der Abfrage konstant ist. Beachten Sie, dass die Prognose auf Basistabellen beschränkt ist und alle anderen Tabellentypen innerhalb eines Datasets ausschließt.
Die in den Preisvariablen für diese Abfrage verwendeten Preise gelten für die Region us-central1. Wenn Sie diese Abfrage für eine andere Region ausführen möchten, aktualisieren Sie die Preisvariablen entsprechend. Preisinformationen finden Sie unter
Speicherpreise.
Öffnen Sie in der Cloud de Confiance Console die Seite „BigQuery“.
Geben Sie im Feld Abfrageeditor die folgende GoogleSQL-Abfrage ein. Für
INFORMATION_SCHEMAmuss die GoogleSQL-Syntax verwendet werden. GoogleSQL ist in der Cloud de Confiance Console die Standardsyntax.DECLARE active_logical_gib_price FLOAT64 DEFAULT 0.02; DECLARE long_term_logical_gib_price FLOAT64 DEFAULT 0.01; DECLARE active_physical_gib_price FLOAT64 DEFAULT 0.04; DECLARE long_term_physical_gib_price FLOAT64 DEFAULT 0.02; WITH storage_sizes AS ( SELECT table_schema AS dataset_name, -- Logical SUM(IF(deleted=false, active_logical_bytes, 0)) / power(1024, 3) AS active_logical_gib, SUM(IF(deleted=false, long_term_logical_bytes, 0)) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, -- Restorable previously deleted physical SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib, FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT WHERE total_physical_bytes + fail_safe_physical_bytes > 0 -- Base the forecast on base tables only for highest precision results AND table_type = 'BASE TABLE' GROUP BY 1 ) SELECT dataset_name, -- Logical ROUND(active_logical_gib, 2) AS active_logical_gib, ROUND(long_term_logical_gib, 2) AS long_term_logical_gib, -- Physical ROUND(active_physical_gib, 2) AS active_physical_gib, ROUND(long_term_physical_gib, 2) AS long_term_physical_gib, ROUND(time_travel_physical_gib, 2) AS time_travel_physical_gib, ROUND(fail_safe_physical_gib, 2) AS fail_safe_physical_gib, -- Compression ratio ROUND(SAFE_DIVIDE(active_logical_gib, active_no_tt_physical_gib), 2) AS active_compression_ratio, ROUND(SAFE_DIVIDE(long_term_logical_gib, long_term_physical_gib), 2) AS long_term_compression_ratio, -- Forecast costs logical ROUND(active_logical_gib * active_logical_gib_price, 2) AS forecast_active_logical_cost, ROUND(long_term_logical_gib * long_term_logical_gib_price, 2) AS forecast_long_term_logical_cost, -- Forecast costs physical ROUND((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price, 2) AS forecast_active_physical_cost, ROUND(long_term_physical_gib * long_term_physical_gib_price, 2) AS forecast_long_term_physical_cost, -- Forecast costs total ROUND(((active_logical_gib * active_logical_gib_price) + (long_term_logical_gib * long_term_logical_gib_price)) - (((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price) + (long_term_physical_gib * long_term_physical_gib_price)), 2) AS forecast_total_cost_difference FROM storage_sizes ORDER BY (forecast_active_logical_cost + forecast_active_physical_cost) DESC;
Klicken Sie auf Ausführen.
Das Ergebnis sieht etwa so aus:
+--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | dataset_name | active_logical_gib | long_term_logical_gib | active_physical_gib | long_term_physical_gib | active_compression_ratio | long_term_compression_ratio | forecast_active_logical_cost | forecaset_long_term_logical_cost | forecast_active_physical_cost | forecast_long_term_physical_cost | forecast_total_cost_difference | +--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | dataset1 | 10.0 | 10.0 | 1.0 | 1.0 | 10.0 | 10.0 | 0.2 | 0.1 | 0.04 | 0.02 | 0.24 |
Fehlerbehebung
Um diese Ansicht zu aktivieren, können Sie den Wert von enable_info_schema_storage für Ihr Projekt oder Ihre Organisation auf TRUE setzen. Weitere Informationen zum Verwalten Ihrer
Konfiguration finden Sie unter Konfigurationseinstellungen
verwalten.
Wenn Sie diese Einstellung nicht konfiguriert haben, wird die folgende Fehlermeldung angezeigt:
INFORMATION_SCHEMA.TABLE_STORAGE hasn't been enabled for project <myproject>. Consider using one of the following SQL statements to enable data collection: ALTER PROJECT `<myproject>` SET OPTIONS (`region-<region>.enable_info_schema_storage` = TRUE) Or to enable for the entire organization: ALTER ORGANIZATION SET OPTIONS (`region-<region>.enable_info_schema_storage` = TRUE) After enabling, please allow around 1 day for the complete historical data to become available.
Führen Sie die in der Fehlermeldung beschriebenen SQL-Anweisungen aus, um die Ansicht zu aktivieren.