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

replication_time 的值表示資料集的舊度。

副本中的部分資料表可能早於這個時間戳記。這個值只會顯示在次要區域。

如果資料集包含含有串流資料的資料表,replication_time 的值就不會準確。

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 值表示次要副本從未與主要副本完全同步。