Ansicht SCHEMATA_REPLICAS
Die Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS
enthält Informationen zu Schemareplikaten.
Erforderliche Rolle
Um die Berechtigungen zu erhalten, die Sie zum Abfragen der Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS
benötigen, müssen Sie Ihren Administrator bitten, Ihnen die IAM-Rolle BigQuery-Datenbetrachter (roles/bigquery.dataViewer
) für das Projekt zu gewähren.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Schema
Die AnsichtINFORMATION_SCHEMA.SCHEMATA_REPLICAS
enthält Informationen zu Dataset-Repliken.
Die Ansicht INFORMATION_SCHEMA.SCHEMATA_REPLICAS
hat das folgende Schema:
Spalte | Typ | Beschreibung |
---|---|---|
catalog_name |
STRING |
Die ID des Projekts, das das Dataset enthält. |
schema_name |
STRING |
Die Dataset-ID des Datasets. |
replica_name |
STRING |
Der Name des Replikats. |
location |
STRING |
Die Region oder Multiregion, in der das Replikat erstellt wurde. |
replica_primary_assigned |
BOOL |
Wenn der Wert TRUE ist, hat das Replikat die primäre Zuweisung. |
replica_primary_assignment_complete |
BOOL |
Wenn der Wert TRUE ist, ist die primäre Zuweisung abgeschlossen.
Wenn der Wert FALSE ist, ist das Replikat (noch) nicht das primäre Replikat, auch wenn replica_primary_assigned gleich TRUE ist. |
creation_time |
TIMESTAMP |
Der Erstellungszeitpunkt des Replicas. Wenn das Replikat zum ersten Mal erstellt wird, wird es erst dann vollständig mit dem primären Replikat synchronisiert, wenn creation_complete gleich TRUE ist. Der Wert von creation_time wird festgelegt, bevor creation_complete gleich TRUE ist. |
creation_complete |
BOOL |
Bei einem Wert von TRUE ist die erste vollständige Synchronisierung des primären Replikats mit dem sekundären Replikat abgeschlossen. |
replication_time |
TIMESTAMP |
Der Wert für Einige Tabellen im Replikat liegen möglicherweise vor diesem Zeitstempel. Dieser Wert ist nur in der sekundären Region sichtbar. Wenn der Datensatz eine Tabelle mit Streamingdaten enthält, ist der Wert von |
sync_status |
JSON |
Der Status der Synchronisierung zwischen dem primären und dem sekundären Replikat. Gibt NULL zurück, wenn es sich um ein primäres Replikat handelt. |
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.SCHEMATA_REPLICAS[_BY_PROJECT] |
auf Projektebene | REGION |
Optional: PROJECT_ID
: die ID Ihres Google Cloud-Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.
REGION
: ist ein beliebiger Dataset-Regionsname.
Beispiel: `region-us`
Beispiele
In diesem Abschnitt sind Beispielabfragen für die INFORMATION_SCHEMA.SCHEMATA_REPLICAS
-Ansicht aufgeführt.
Beispiel: Alle replizierten Datasets in einer Region auflisten
Im folgenden Beispiel werden alle replizierten Datasets in der Region US
aufgelistet:
SELECT * FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;
Das Ergebnis sieht etwa so aus:
+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+ | catalog_name | schema_name | replica_name | location | replica_primary_assigned | replica_primary_assignment_complete | creation_time | creation_complete | replication_time | +---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+ | myproject | replica1 | us-east7 | us-east7 | true | true | 2023-04-17 20:42:45 | true | NULL | | myproject | replica1 | us-east4 | us-east4 | false | false | 2023-04-17 20:44:26 | true | NULL | +---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
Beispiel: Replizierte Datasets und das jeweilige primäre Replikat auflisten
Im folgenden Beispiel werden alle replizierten Datasets und das jeweilige primäre Replikat in der Region US
aufgelistet:
SELECT catalog_name, schema_name, replica_name AS primary_replica_name, location AS primary_replica_location, replica_primary_assignment_complete AS is_primary, FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS WHERE replica_primary_assignment_complete = TRUE AND replica_primary_assigned = TRUE;
Das Ergebnis sieht etwa so aus:
+---------------------+-------------+----------------------+--------------------------+------------+ | catalog_name | schema_name | primary_replica_name | primary_replica_location | is_primary | +---------------------+-------------+----------------------+--------------------------+------------+ | myproject | my_schema1 | us-east4 | us-east4 | true | | myproject | my_schema2 | us | US | true | | myproject | my_schema2 | us | US | true | +---------------------+-------------+----------------------+--------------------------+------------+
Beispiel: Replizierte Datasets und den jeweiligen Replikatstatus auflisten
Im folgenden Beispiel werden alle replizierten Datasets und der jeweilige Replikatstatus aufgelistet:
SELECT catalog_name, schema_name, replica_name, CASE WHEN (replica_primary_assignment_complete = TRUE AND replica_primary_assigned = TRUE) THEN 'PRIMARY' WHEN (replica_primary_assignment_complete = FALSE AND replica_primary_assigned = FALSE) THEN 'SECONDARY' ELSE 'PENDING' END AS replica_state, FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;
Das Ergebnis sieht etwa so aus:
+---------------------+-------------+--------------+---------------+ | catalog_name | schema_name | replica_name | replica_state | +---------------------+-------------+--------------+---------------+ | myproject | my_schema1 | us-east4 | PRIMARY | | myproject | my_schema1 | my_replica | SECONDARY | +---------------------+-------------+--------------+---------------+
Beispiel: Auflisten, wann jedes Replikat erstellt wurde und ob das anfängliche Backfill abgeschlossen ist
Im folgenden Beispiel werden alle Replikate und der Zeitstempel aufgelistet, zu dem das Replikat erstellt wurde. Wenn ein sekundäres Replikat erstellt wird, werden die zugehörigen Daten erst dann vollständig mit dem primären Replikat synchronisiert, wenn creation_complete
gleich TRUE
ist.
SELECT catalog_name, schema_name, replica_name, creation_time AS creation_time, FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS WHERE creation_complete = TRUE;
Das Ergebnis sieht etwa so aus:
+---------------------+-------------+--------------+---------------------+ | catalog_name | schema_name | replica_name | creation_time | +---------------------+-------------+--------------+---------------------+ | myproject | my_schema1 | us-east4 | 2023-06-15 00:09:11 | | myproject | my_schema2 | us | 2023-06-15 00:19:27 | | myproject | my_schema2 | my_replica2 | 2023-06-15 00:19:50 | | myproject | my_schema1 | my_replica | 2023-06-15 00:16:19 | +---------------------+-------------+--------------+---------------------+
Beispiel: Letzte synchronisierte Uhrzeit anzeigen
Im folgenden Beispiel wird der neueste Zeitstempel angezeigt, zu dem das sekundäre Replikat mit dem primären Replikat erfasst wurde.
Sie müssen diese Abfrage in der Region ausführen, die das sekundäre Replikat enthält. Einige Tabellen im Dataset sind möglicherweise der erfassten Replikationszeit voraus.
SELECT catalog_name, schema_name, replica_name, -- Calculate the replication lag in seconds. TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), replication_time, SECOND) AS replication_lag_seconds, -- RLS -- Calculate the replication lag in minutes. TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), replication_time, MINUTE) AS replication_lag_minutes, -- RLM -- Show the last sync time for easier interpretation. replication_time AS secondary_replica_fully_synced_as_of_time, FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
Das Ergebnis sieht etwa so aus:
+---------------------+-------------+--------------+-----+-----+-------------------------------------------+ | catalog_name | schema_name | replica_name | rls | rlm | secondary_replica_fully_synced_as_of_time | +---------------------+-------------+--------------+-----+-----+-------------------------------------------+ | myproject | my_schema1 | us-east4 | 23 | 0 | 2023-06-15 00:18:49 | | myproject | my_schema2 | us | 67 | 1 | 2023-06-15 00:22:49 | | myproject | my_schema1 | my_replica | 11 | 0 | 2023-06-15 00:28:49 | | myproject | my_schema2 | my_replica2 | 125 | 2 | 2023-06-15 00:29:20 | +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
Ein Wert von NULL
gibt an, dass das sekundäre Replikat nie vollständig mit dem primären Replikat synchronisiert wurde.