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:
  • ACTIVE: o índice é utilizável ou está a ser criado.
  • PENDING DISABLEMENT: o tamanho total das tabelas base indexadas excede o limite da sua organização; o índice está em fila para eliminação. Enquanto estiver neste estado, o índice é utilizável em consultas de pesquisa e são-lhe cobradas taxas de 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 é inferior a 10 GB. Neste estado, o índice não é usado em consultas de pesquisa e não lhe é cobrado o armazenamento do índice de pesquisa.
  • PERMANENTLY DISABLED: existe uma alteração de esquema incompatível na tabela base, como alterar o tipo de uma coluna indexada de STRING para INT64.
index_status_details RECORD O registo contém os seguintes campos:
  • throttle_status: indica o estado de limitação do índice de pesquisa. Os valores possíveis são os seguintes:
    • UNTHROTTLED: o índice é utilizável.
    • BASE_TABLE_TOO_SMALL: o tamanho da tabela base é inferior a 10 GB. Este limite aplica-se quer use ou não a sua própria reserva para as tarefas de gestão de índices. Neste caso, o índice é desativado temporariamente e as consultas de pesquisa não usam o índice.
    • BASE_TABLE_TOO_LARGE: o tamanho da tabela 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 sua organização.
  • message: mensagem detalhada que descreve o estado do índice.
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      |
+--------------------+--------------------+---------------+----------------+