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 权限,请参阅使用 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 | +--------------------+--------------------+---------------+----------------+