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.getbigquery.tables.list
Cada um dos seguintes papéis predefinidos do IAM inclui as permissões anteriores:
roles/bigquery.adminroles/bigquery.dataViewerroles/bigquery.dataEditorroles/bigquery.metadataViewer
Essa visualização de esquema está disponível apenas para usuários com organizações Cloud de Confiance by S3NS 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 projetoCloud de Confiance . 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.
É possível configurar alertas para receber notificações quando um determinado limite for excedido, semelhante a configurar alertas para consultas programadas. Por exemplo, configure um alerta quando o tamanho da tabela exceder 70% do limite da cota para ter tempo de agir.
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 | +--------------------+--------------------+---------------+----------------+