SEARCH_INDEXES_BY_ORGANIZATION 檢視畫面

BigQuery 搜尋索引提供免費索引管理服務,直到貴機構在特定區域達到限制為止。您可以透過 INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 檢視表,瞭解目前的使用量是否快要達到限制,並依專案和資料表細分。INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 檢視表會針對與目前專案相關聯的整個機構,為每個搜尋索引各列出一個相對應的資料列。

所需權限

如要查詢 INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 檢視畫面,您必須具備機構的下列 Identity and Access Management (IAM) 權限:

  • bigquery.tables.get
  • bigquery.tables.list

下列每個預先定義的 IAM 角色都包含上述權限:

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer

只有已定義Google Cloud 機構的使用者才能使用這個結構定義檢視畫面。

如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」一文。

結構定義

INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 檢視表具有下列結構定義:

資料欄名稱 資料類型
project_id STRING 資料集所屬專案的名稱。
project_number STRING 包含資料集的專案編號。
index_catalog STRING 資料集所屬專案的名稱。
index_schema STRING 包含索引的資料集名稱。
table_name STRING 建立索引的基礎資料表名稱。
index_name STRING 搜尋索引的名稱。
index_status STRING 索引狀態可以是下列其中一種:
  • ACTIVE:索引可用或正在建立中。
  • PENDING DISABLEMENT:已建立索引的基礎資料表總大小超出貴機構的限制,系統已將索引排入刪除佇列。處於這個狀態時,索引可用於搜尋查詢,且系統會向您收取搜尋索引儲存空間費用。
  • TEMPORARILY DISABLED:索引基礎資料表的總大小超過貴機構的限制,或是索引基礎資料表小於 10 GB。處於這個狀態時,搜尋查詢不會使用索引,您也不必支付搜尋索引儲存空間費用。
  • PERMANENTLY DISABLED:基礎資料表發生不相容的結構定義變更,例如將索引資料欄的類型從 STRING 變更為 INT64
index_status_details RECORD 記錄包含下列欄位:
  • throttle_status:指出搜尋索引的節流狀態,可能值如下:
    • UNTHROTTLED:索引可供使用。
    • BASE_TABLE_TOO_SMALL:基本資料表大小小於 10 GB。無論您是否使用自己的預留項目執行索引管理工作,都適用這項限制。在這種情況下,索引會暫時停用,搜尋查詢也不會使用索引。
    • BASE_TABLE_TOO_LARGE:基本資料表大小超出貴機構的限制
    • ORGANIZATION_LIMIT_EXCEEDED:貴機構中已建立索引的基礎資料表總大小超過限制
  • message:說明索引狀態的詳細訊息。
use_background_reservation BOOL 指出索引維護作業是否使用 BACKGROUND 預訂。如果索引維護作業使用限制,這項屬性會設為 FALSE

範圍和語法

對這個檢視表執行的查詢必須包含區域限定詞。下表說明這個檢視畫面的區域範圍:

檢視表名稱 資源範圍 區域範圍
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 包含指定專案的機構 REGION

更改下列內容:

  • 選用:PROJECT_ID:您的Google Cloud 專案 ID。如未指定,系統會使用預設專案。

  • REGION:專案的區域。例如:`myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION

索引節流

如果索引受到節流,其資料表大小就不會計入機構的限制。如果基本資料表大小低於 10 GB 或超過貴機構的限制,就會發生節流。索引受到節流時,管理工作會暫停,導致索引過時,最終暫時停用。因此,搜尋查詢無法使用索引。

範例

本節包含 INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 檢視區塊的查詢範例。

查看特定區域的用量是否超出上限

以下範例說明如果整個機構在美國多重區域使用共用時段,且索引基本資料表總大小超過 100 TB,會發生什麼情況:

WITH
 indexed_base_table_size AS (
 SELECT
   SUM(base_table.total_logical_bytes) AS total_logical_bytes
 FROM
   `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION AS search_index
 JOIN
   `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION AS base_table
 ON
   (search_index.table_name = base_table.table_name
     AND search_index.project_id = base_table.project_id
     AND search_index.index_schema = base_table.table_schema)
 WHERE
   TRUE
   -- Excludes search indexes that are permanently disabled.
   AND search_index.index_status != 'PERMANENTLY DISABLED'
   -- Excludes BASE_TABLE_TOO_SMALL search indexes whose base table size is
   -- less than 10 GB. These tables don't count toward the limit.
   AND search_index.index_status_details.throttle_status != 'BASE_TABLE_TOO_SMALL'
   -- Excludes search indexes whose project has BACKGROUND reservation purchased
   -- for search indexes.
   AND search_index.use_background_reservation = false
 -- Outputs the total indexed base table size if it exceeds 100 TB,
 -- otherwise, doesn't return any output.
)
SELECT * FROM indexed_base_table_size
WHERE total_logical_bytes >= 109951162777600 -- 100 TB

結果大致如下:

+---------------------+
| total_logical_bytes |
+---------------------+
|     109951162777601 |
+---------------------+

依區域找出專案的索引基準表總大小

以下範例提供美國多區域中每個專案的詳細資料,以及已建立索引的基本資料表總大小:

SELECT
 search_index.project_id,
 search_index.use_background_reservation,
 SUM(base_table.total_logical_bytes) AS total_logical_bytes
FROM
 `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION AS search_index
JOIN
 `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION AS base_table
ON
 (search_index.table_name = base_table.table_name
   AND search_index.project_id = base_table.project_id
   AND search_index.index_schema = base_table.table_schema)
WHERE
 TRUE
  -- Excludes search indexes that are permanently disabled.
  AND search_index.index_status != 'PERMANENTLY DISABLED'
  -- Excludes BASE_TABLE_TOO_SMALL search indexes whose base table size is
  -- less than 10 GB. These tables don't count toward limit.
 AND search_index.index_status_details.throttle_status != 'BASE_TABLE_TOO_SMALL'
GROUP BY search_index.project_id, search_index.use_background_reservation

結果大致如下:

+---------------------+----------------------------+---------------------+
|     project_id      | use_background_reservation | total_logical_bytes |
+---------------------+----------------------------+---------------------+
| projecta            |     true                   |     971329178274633 |
+---------------------+----------------------------+---------------------+
| projectb            |     false                  |     834638211024843 |
+---------------------+----------------------------+---------------------+
| projectc            |     false                  |     562910385625126 |
+---------------------+----------------------------+---------------------+

找出受到節流的搜尋索引

以下範例會傳回機構和區域內所有受到節流的搜尋索引:

SELECT project_id, index_schema, table_name, index_name
FROM
 `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
WHERE
 -- Excludes search indexes that are permanently disabled.
 index_status != 'PERMANENTLY DISABLED'
 AND index_status_details.throttle_status IN ('ORGANIZATION_LIMIT_EXCEEDED', 'BASE_TABLE_TOO_LARGE')

結果大致如下:

+--------------------+--------------------+---------------+----------------+
|     project_id     |    index_schema    |  table_name   |   index_name   |
+--------------------+--------------------+---------------+----------------+
|     projecta       |     dataset_us     |   table1      |    index1      |
|     projectb       |     dataset_us     |   table1      |    index1      |
+--------------------+--------------------+---------------+----------------+