Visualização SEARCH_INDEXES_BY_ORGANIZATION
Os índices de pesquisa do BigQuery oferecem gerenciamento de índice gratuito até que sua organização atinja o limite em uma determinada região. Use a visualização INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
para entender seu consumo atual em relação a esse limite, dividido por projetos e tabelas. A visualização
INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
contém uma linha para
cada índice de pesquisa de toda a organização associada ao projeto atual.
Permissões necessárias
Para consultar a visualização INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
, você precisa das
seguintes permissões do Identity and Access Management (IAM) para sua organização:
bigquery.tables.get
bigquery.tables.list
Cada um dos seguintes papéis predefinidos do IAM inclui as permissões anteriores:
roles/bigquery.admin
roles/bigquery.dataViewer
roles/bigquery.dataEditor
roles/bigquery.metadataViewer
Essa visualização de esquema está disponível apenas para usuários com organizações Google Cloud definidas.
Para mais informações sobre as permissões do BigQuery, consulte Controle de acesso com o IAM.
Esquema
A visualização INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
tem o seguinte esquema:
Nome da coluna | Tipo de dados | Valor |
---|---|---|
project_id |
STRING |
Nome do projeto que contém o conjunto de dados. |
project_number |
STRING |
O número do projeto que contém o conjunto de dados. |
index_catalog |
STRING |
Nome do projeto que contém o conjunto de dados. |
index_schema |
STRING |
O nome do conjunto de dados que contém o índice. |
table_name |
STRING |
O nome da tabela base em que o índice é criado. |
index_name |
STRING |
O nome do índice de pesquisa. |
index_status |
STRING |
O status do índice pode ser um dos seguintes:
|
index_status_details |
RECORD |
O registro contém os seguintes campos:
|
use_background_reservation |
BOOL |
Indica se a manutenção do índice usa a reserva BACKGROUND . É definido como FALSE quando a manutenção do índice usa o limite. |
Escopo e sintaxe
As consultas nessa visualização precisam incluir um qualificador de região. A tabela a seguir explica o escopo da região dessa visualização:
Nome da visualização | Escopo do recurso | Escopo da região |
---|---|---|
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION |
Organização que contém o projeto especificado | REGION |
Substitua:
Opcional:
PROJECT_ID
: o ID do seu projetoGoogle Cloud . Se não for especificado, o projeto padrão será usado.REGION
: a região do projeto. Por exemplo,`myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
.
Limitação de indexação
Se um índice for limitado, o tamanho da tabela dele não será contabilizado no limite da sua organização. Essa limitação ocorre quando o tamanho da tabela base fica abaixo de 10 GB ou excede o limite da sua organização. Quando um índice é limitado, os jobs de gerenciamento dele são pausados, fazendo com que o índice fique desatualizado e, eventualmente, seja desativado temporariamente. Consequentemente, as consultas de pesquisa não podem usar o índice.
Exemplos
Esta seção inclui exemplos de consultas da visualização INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
.
Descobrir se o consumo excede o limite em uma determinada região
O exemplo a seguir ilustra se o tamanho total da tabela base indexada em uma organização, usando slots compartilhados na multirregião dos EUA, excede 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
O resultado será semelhante ao seguinte:
+---------------------+ | total_logical_bytes | +---------------------+ | 109951162777601 | +---------------------+
Encontrar o tamanho total da tabela base indexada por projetos em uma região
O exemplo a seguir mostra o detalhamento de cada projeto em uma região múltipla dos EUA com o tamanho total das tabelas de base indexadas:
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
O resultado será semelhante ao seguinte:
+---------------------+----------------------------+---------------------+ | project_id | use_background_reservation | total_logical_bytes | +---------------------+----------------------------+---------------------+ | projecta | true | 971329178274633 | +---------------------+----------------------------+---------------------+ | projectb | false | 834638211024843 | +---------------------+----------------------------+---------------------+ | projectc | false | 562910385625126 | +---------------------+----------------------------+---------------------+
Encontrar índices de pesquisa limitados
O exemplo a seguir retorna todos os índices de pesquisa que estão sendo limitados na organização e na região:
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')
O resultado será semelhante ao seguinte:
+--------------------+--------------------+---------------+----------------+ | project_id | index_schema | table_name | index_name | +--------------------+--------------------+---------------+----------------+ | projecta | dataset_us | table1 | index1 | | projectb | dataset_us | table1 | index1 | +--------------------+--------------------+---------------+----------------+