SCHEMATA_REPLICAS 檢視區塊
INFORMATION_SCHEMA.SCHEMATA_REPLICAS
檢視畫面包含結構定義副本的相關資訊。
必要角色
如要取得查詢 INFORMATION_SCHEMA.SCHEMATA_REPLICAS
檢視畫面所需的權限,請要求管理員授予您專案的 BigQuery 資料檢視者 (roles/bigquery.dataViewer
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
結構定義
INFORMATION_SCHEMA.SCHEMATA_REPLICAS
檢視畫面包含資料集副本的相關資訊。INFORMATION_SCHEMA.SCHEMATA_REPLICAS
檢視表具有下列結構定義:欄 | 類型 | 說明 |
---|---|---|
catalog_name |
STRING |
資料集所屬專案的專案 ID。 |
schema_name |
STRING |
資料集的資料集 ID。 |
replica_name |
STRING |
副本名稱。 |
location |
STRING |
建立副本的區域或多區域。 |
replica_primary_assigned |
BOOL |
如果值為 TRUE ,代表副本已指派為主要副本。 |
replica_primary_assignment_complete |
BOOL |
如果值為 TRUE ,表示主要指派作業已完成。
如果值為 FALSE ,即使 replica_primary_assigned 等於 TRUE ,備用資源仍不是 (還不是) 主要備用資源。 |
creation_time |
TIMESTAMP |
副本的建立時間。首次建立副本時,副本不會與主要副本完全同步,直到 creation_complete 等於 TRUE 為止。creation_time 的值會在 creation_complete 等於 TRUE 之前設定。 |
creation_complete |
BOOL |
如果值為 TRUE ,表示主要副本已完成與次要副本的初始完整同步。 |
replication_time |
TIMESTAMP |
副本中的部分資料表可能早於這個時間戳記。這個值只會顯示在次要區域。 如果資料集包含含有串流資料的資料表, |
sync_status |
JSON |
主要和次要副本之間的同步狀態。如果副本是主要副本,則傳回 NULL 。 |
範圍和語法
對這個檢視表執行的查詢必須包含區域限定詞。下表說明這個檢視畫面的區域範圍:
檢視表名稱 | 資源範圍 | 區域範圍 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] |
專案層級 | REGION |
-
選用:
PROJECT_ID
:您的 Google Cloud 專案 ID。如未指定,系統會使用預設專案。 -
REGION
:任何資料集區域名稱。 例如:`region-us`
。
範例
本節列出 INFORMATION_SCHEMA.SCHEMATA_REPLICAS
檢視區塊的查詢範例。
範例:列出某個區域中的所有複製資料集
以下範例會列出 US
地區中的所有複製資料集:
SELECT * FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;
結果大致如下:
+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+ | 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 | +---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
範例:列出複製的資料集,以及每個資料集的主要副本
以下範例會列出 US
地區中的所有複製資料集及其主要副本:
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;
結果類似下列畫面:
+---------------------+-------------+----------------------+--------------------------+------------+ | 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 | +---------------------+-------------+----------------------+--------------------------+------------+
範例:列出複製的資料集及其副本狀態
下列範例會列出所有已複製的資料集及其副本狀態:
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;
結果大致如下:
+---------------------+-------------+--------------+---------------+ | catalog_name | schema_name | replica_name | replica_state | +---------------------+-------------+--------------+---------------+ | myproject | my_schema1 | us-east4 | PRIMARY | | myproject | my_schema1 | my_replica | SECONDARY | +---------------------+-------------+--------------+---------------+
範例:列出每個副本的建立時間,以及初始回填是否完成
以下範例會列出所有副本,以及副本的建立時間。建立次要副本時,資料不會與主要副本完全同步,直到 creation_complete
等於 TRUE
為止。
SELECT catalog_name, schema_name, replica_name, creation_time AS creation_time, FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS WHERE creation_complete = TRUE;
結果類似下列畫面:
+---------------------+-------------+--------------+---------------------+ | 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 | +---------------------+-------------+--------------+---------------------+
示例:顯示最近一次同步處理資料的時間
以下範例顯示次要副本趕上主要副本時的最新時間戳記。
您必須在包含次要副本的區域中執行這項查詢。資料集中的部分表格可能比報表顯示的複製時間早。
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
結果大致如下:
+---------------------+-------------+--------------+-----+-----+-------------------------------------------+ | 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 | +---------------------+-------------+--------------+-----+-----+-------------------------------------------+
NULL
值表示次要副本從未與主要副本完全同步。