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 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:
  • ACTIVE: o índice pode ser usado ou está sendo criado.
  • PENDING DISABLEMENT: o tamanho total das tabelas base indexadas excede o limite da sua organização. O índice está na fila para exclusão. Nesse estado, o índice pode ser usado em consultas de pesquisa, e há cobrança pelo armazenamento do índice de pesquisa.
  • TEMPORARILY DISABLED: o tamanho total das tabelas base indexadas excede o limite da sua organização ou a tabela base indexada é menor que 10 GB. Nesse estado, o índice não é usado em consultas de pesquisa, e não há cobrança pelo armazenamento do índice de pesquisa.
  • PERMANENTLY DISABLED: há uma mudança de esquema incompatível na tabela de base, como a mudança do tipo de uma coluna indexada de STRING para INT64.
index_status_details RECORD O registro contém os seguintes campos:
  • throttle_status: indica o status de limitação do índice de pesquisa. Os valores possíveis são:
    • UNTHROTTLED: o índice pode ser usado.
    • BASE_TABLE_TOO_SMALL: o tamanho da tabela de base é menor que 10 GB. Esse limite se aplica independente de você usar ou não sua própria reserva para os jobs de gerenciamento de índice. Nesse caso, o índice é desativado temporariamente, e as consultas de pesquisa não o usam.
    • BASE_TABLE_TOO_LARGE: o tamanho da tabela de base excede o limite da sua organização.
    • ORGANIZATION_LIMIT_EXCEEDED: o tamanho total das tabelas base indexadas na sua organização excede o limite da organização.
  • message: mensagem detalhada que descreve o status do índice.
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      |
+--------------------+--------------------+---------------+----------------+