Vista SEARCH_INDEXES_BY_ORGANIZATION
Os índices de pesquisa do BigQuery oferecem gestão de índices gratuita até a sua organização atingir o limite numa determinada região. Pode usar a vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
para compreender o seu consumo atual em relação a esse limite, discriminado por projetos e tabelas. A vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
contém uma linha para cada índice de pesquisa de toda a organização associada ao projeto atual.
Autorizações necessárias
Para consultar a vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
, precisa das seguintes autorizações de gestão de identidade e de acesso (IAM) para a sua organização:
bigquery.tables.get
bigquery.tables.list
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações anteriores:
roles/bigquery.admin
roles/bigquery.dataViewer
roles/bigquery.dataEditor
roles/bigquery.metadataViewer
Esta vista de esquema só está disponível para utilizadores com Google Cloud organizações definidas.
Para mais informações sobre as autorizações do BigQuery, consulte o artigo Controlo de acesso com a IAM.
Esquema
A vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
tem o seguinte esquema:
Nome da coluna | Tipo de dados | Valor |
---|---|---|
project_id |
STRING |
O 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 |
O 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 na qual o índice é criado. |
index_name |
STRING |
O nome do índice de pesquisa. |
index_status |
STRING |
O estado do índice pode ser um dos seguintes:
|
index_status_details |
RECORD |
O registo contém os seguintes campos:
|
use_background_reservation |
BOOL |
Indica se a manutenção do índice usa a reserva BACKGROUND . Esta opção está definida como FALSE quando a manutenção do índice usa o limite. |
Âmbito e sintaxe
As consultas nesta vista têm de incluir um qualificador de região. A tabela seguinte explica o âmbito da região para esta vista:
Nome da visualização de propriedade | Âmbito do recurso | Âmbito da região |
---|---|---|
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION |
Organização que contém o projeto especificado | REGION |
Substitua o seguinte:
Opcional:
PROJECT_ID
: o ID do seu Google Cloud projeto. Se não for especificado, é usado o projeto predefinido.
.REGION
: a região do seu projeto. Por exemplo,`myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
.
Limitação do índice
Se um índice for limitado, o tamanho da respetiva tabela não é contabilizado para o limite da sua organização. Esta limitação ocorre quando o tamanho da tabela base é inferior a 10 GB ou excede o limite da sua organização. Quando um índice é limitado, as respetivas tarefas de gestão são pausadas, o que faz com que o índice fique desatualizado e, eventualmente, seja desativado temporariamente. Consequentemente, as consultas de pesquisa não podem usar o índice.
Pode configurar alertas para receber notificações quando um determinado limite é excedido, semelhante à configuração de alertas para consultas agendadas. Por exemplo, configure um alerta quando o tamanho da tabela exceder 70% do limite da quota, para ter tempo de agir.
Exemplos
Esta secção inclui exemplos de consultas da vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
.
Descubra se o consumo excede o limite numa determinada região
O exemplo seguinte ilustra o que acontece se o tamanho total da tabela base indexada numa organização, que usa slots partilhados na multirregião dos EUA, exceder 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 é semelhante ao seguinte:
+---------------------+ | total_logical_bytes | +---------------------+ | 109951162777601 | +---------------------+
Encontre o tamanho total da tabela base indexada por projetos numa região
O exemplo seguinte apresenta a discriminação de cada projeto numa multirregião dos EUA com o tamanho total das tabelas 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 é semelhante ao seguinte:
+---------------------+----------------------------+---------------------+ | project_id | use_background_reservation | total_logical_bytes | +---------------------+----------------------------+---------------------+ | projecta | true | 971329178274633 | +---------------------+----------------------------+---------------------+ | projectb | false | 834638211024843 | +---------------------+----------------------------+---------------------+ | projectc | false | 562910385625126 | +---------------------+----------------------------+---------------------+
Encontre índices de pesquisa limitados
O exemplo seguinte devolve todos os índices de pesquisa que estão 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 é semelhante ao seguinte:
+--------------------+--------------------+---------------+----------------+ | project_id | index_schema | table_name | index_name | +--------------------+--------------------+---------------+----------------+ | projecta | dataset_us | table1 | index1 | | projectb | dataset_us | table1 | index1 | +--------------------+--------------------+---------------+----------------+