Indexação de metadados para tabelas do BigQuery

Este documento descreve a indexação de metadados de colunas no BigQuery e explica como alocar recursos dedicados para melhorar a atualização do índice e a performance da consulta.

O BigQuery indexa automaticamente os metadados de tabelas do BigQuery que excedem 1 GiB. Esses metadados incluem o local do arquivo, informações de particionamento e atributos no nível da coluna, que o BigQuery usa para otimizar e acelerar as consultas.

Por padrão, a indexação de metadados no BigQuery é uma operação em segundo plano gratuita e não requer nenhuma ação da sua parte. No entanto, a atualização do índice depende de recursos livres disponíveis e não tem objetivos de nível de serviço (SLOs) de desempenho. Se a atualidade do índice for essencial para seu caso de uso, recomendamos configurar uma reserva de BACKGROUND.

Conferir o horário da atualização do índice de metadados

Para conferir o horário da última atualização do índice de metadados de uma tabela, consulte a coluna LAST_METADATA_INDEX_REFRESH_TIME da visualização INFORMATION_SCHEMA.TABLE_STORAGE. Para fazer isso, siga estas etapas:

  1. No console Trusted Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    SELECT
      project_id,
      project_number,
      table_name,
      last_metadata_index_refresh_time
    FROM
      [PROJECT_ID.]region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE;

    Substitua:

    • PROJECT_ID: o ID do projeto Trusted Cloud by S3NS . Se não for especificado, o projeto padrão será usado.
    • REGION: a região em que o projeto está localizado. Por exemplo, region-us.
  3. Clique em Executar.

Conferir o uso do índice de metadados da coluna

Para saber se o índice de metadados da coluna foi usado após a conclusão de um job, verifique a propriedade TableMetadataCacheUsage do recurso Job. Se o campo unusedReason estiver vazio (não preenchido), o índice de metadados da coluna foi usado. Se ele estiver preenchido, o campo explanation acompanhante vai fornecer um motivo pelo qual o índice de metadados da coluna não foi usado.

Também é possível conferir o uso do índice de metadados da coluna com o campo metadata_cache_statistics na visualização INFORMATION_SCHEMA.JOBS.

Por exemplo, a seguir é mostrado o uso do índice de metadados da coluna para o job my-job:

SELECT metadata_cache_statistics
FROM `region-US`.INFORMATION_SCHEMA.JOBS
WHERE job_id = 'my-job';

Como outro exemplo, a seguir é mostrado o número de jobs que usaram o índice de metadados de coluna para a tabela my-table:

SELECT COUNT(*)
FROM
  `region-US`.INFORMATION_SCHEMA.JOBS,
  UNNEST(metadata_cache_statistics.table_metadata_cache_usage) AS stats
WHERE
  stats.table_reference.table_id='my-table' AND
  stats.table_reference.dataset_id='my-dataset' AND
  stats.table_reference.project_id='my-project' AND
  stats.unusedReason IS NULL;

Configurar recursos de indexação dedicados

Para configurar recursos para atualizações de indexação de metadados no seu projeto, primeiro é necessário ter uma reserva atribuída a ele. Para fazer isso, siga estas etapas:

  1. Crie uma reserva de BACKGROND.
  2. Atribua seu projeto à reserva.

Depois de configurar a reserva, selecione um dos métodos a seguir para atribuir slots ao job de indexação de metadados. Por padrão, os slots alocados dessa forma são compartilhados com outros jobs se estiverem inativos. Para mais informações, consulte Slots inativos.

Console

  1. No console Trusted Cloud , acesse a página Gerenciamento de capacidade.

    Acessar "Gerenciamento de capacidade"

  2. Clique em Ações de reserva > Criar atribuição.

  3. Selecione seu projeto de reserva.

  4. Defina Job Type como Background.

  5. Clique em Criar.

bq

Use o comando bq mk.

bq mk \
  --project_id=ADMIN_PROJECT_ID \
  --location=LOCATION \
  --reservation_assignment \
  --reservation_id=RESERVATION_NAME \
  --assignee_id=PROJECT_ID \
  --job_type=BACKGROUND \
  --assignee_type=PROJECT

Substitua:

  • ADMIN_PROJECT_ID: o ID do projeto do projeto de administração que é proprietário do recurso de reserva.
  • LOCATION: o local da reserva.
  • RESERVATION_NAME: o nome da reserva.
  • PROJECT_ID: o ID do projeto a ser atribuído a essa reserva.

SQL

Para atribuir uma reserva a um projeto, use a instrução DDL CREATE ASSIGNMENT.

  1. No console Trusted Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    CREATE ASSIGNMENT
    ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID
    OPTIONS (
      assignee = 'projects/PROJECT_ID',
      job_type = 'BACKGROUND');
    Substitua:

    • ADMIN_PROJECT_ID: o ID do projeto do projeto de administração que é proprietário do recurso de reserva.
    • LOCATION: o local da reserva.
    • RESERVATION_NAME: o nome da reserva.
    • ASSIGNMENT_ID: o ID da atribuição. O ID precisa ser exclusivo do projeto e do local, começar e terminar com uma letra minúscula ou um número e conter apenas letras minúsculas, números e traços.
    • PROJECT_ID: o ID do projeto que contém as tabelas. Este projeto está atribuído à reserva.
  3. Clique em Executar.

Conferir informações do job de indexação

Depois de configurar os jobs de indexação dedicados, você pode conferir informações sobre eles na visualização JOBS. O exemplo de SQL a seguir mostra os cinco jobs de atualização mais recentes em PROJECT_NAME.

SELECT *
FROM
  region-us.INFORMATION_SCHEMA.JOBS
WHERE
  project_id = 'PROJECT_NAME'
  AND SEARCH(job_id, '`metadata_cache_refresh`')
ORDER BY
  creation_time DESC
LIMIT 5;

Substitua PROJECT_NAME pelo nome do projeto que contém os jobs de indexação de metadados.

Configurar alertas de indexação de metadados

O processo de alertas do Cloud Monitoring notifica você quando a performance do BigQuery não atende aos critérios definidos. Para mais informações, consulte Visão geral de alertas. Com a indexação de metadados, é possível configurar alertas para uso de slot e desatuação.

Alerta de uso de slot

Esse alerta notifica você quando a reserva em segundo plano excede uma porcentagem definida da alocação. O valor padrão é 95%. É possível configurar esse alerta para uma reserva específica ou para todas as reservas em segundo plano. Quando esse alerta é acionado, recomendamos que você aumente o tamanho da reserva.

Para configurar esse alerta para cada reserva em segundo plano, faça o seguinte:

  1. Configure um canal de notificação de monitoramento, se ainda não tiver feito isso.
  2. Acesse a página Integrações.

    Acessar "Integrações"

  3. Encontre a integração com o BigQuery e clique em Ver detalhes.

  4. Na guia Alertas, selecione Uso de slot: uso de slot de cache de metadados em segundo plano muito alto.

  5. Opcional: para personalizar ainda mais esse alerta, clique em Mostrar opções > Personalizar política de alertas.

  6. Em Configurar notificações, selecione seu canal de notificação.

  7. Clique em Criar.

Alerta de desatualização

Esse alerta notifica você quando a defasagem do índice de metadados da coluna média aumenta muito em comparação com a média atual. O limite padrão é se a média de 4 horas for mais do que o dobro da média anterior por mais de 30 minutos. Quando esse alerta é acionado, recomendamos que você aumente o tamanho da reserva ou crie uma reserva em segundo plano se você não tiver uma.

Para configurar esse alerta, faça o seguinte:

  1. Configure um canal de notificação de monitoramento, se ainda não tiver feito isso.
  2. Acesse a página Integrações.

    Acessar "Integrações"

  3. Encontre a integração com o BigQuery e clique em Ver detalhes.

  4. Na guia Alertas, selecione Inatividade do índice de metadados da coluna: aumento percentual excessivo.

  5. Opcional: para personalizar ainda mais esse alerta, clique em Mostrar opções > Personalizar política de alertas.

  6. Em Configurar notificações, selecione seu canal de notificação.

  7. Clique em Criar.

Limitações

As melhorias de desempenho da consulta de metadados se aplicam apenas a instruções SELECT, INSERT e CREATE TABLE AS SELECT. As instruções da linguagem de manipulação de dados (DML) não vão ter melhorias na indexação de metadados.

A seguir