SEARCH_INDEXES_BY_ORGANIZATION ビュー
BigQuery 検索インデックスでは、組織が特定のリージョンの上限に達するまで、インデックス管理を無料で行えます。INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
ビューを使用すると、プロジェクトとテーブルごとに上限に対する現在の使用状況を確認できます。INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
ビューには、現在のプロジェクトに関連付けられた組織全体の検索インデックスごとに 1 行が表示されます。
必要な権限
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 の権限の詳細については、IAM でのアクセス制御をご覧ください。
スキーマ
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 |
インデックスのステータスは次のいずれかになります。
|
index_status_details |
RECORD |
レコードには次のフィールドが含まれます。
|
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 | +--------------------+--------------------+---------------+----------------+