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:
No console Trusted Cloud , acesse a página BigQuery.
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
.
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:
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
No console Trusted Cloud , acesse a página Gerenciamento de capacidade.
Clique em > Criar atribuição.
Ações de reservaSelecione seu projeto de reserva.
Defina Job Type como Background.
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
.
No console Trusted Cloud , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
Substitua:CREATE ASSIGNMENT ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID OPTIONS ( assignee = 'projects/PROJECT_ID', job_type = 'BACKGROUND');
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.
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:
- Configure um canal de notificação de monitoramento, se ainda não tiver feito isso.
Acesse a página Integrações.
Encontre a integração com o BigQuery e clique em Ver detalhes.
Na guia Alertas, selecione Uso de slot: uso de slot de cache de metadados em segundo plano muito alto.
Opcional: para personalizar ainda mais esse alerta, clique em Mostrar opções > Personalizar política de alertas.
Em Configurar notificações, selecione seu canal de notificação.
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:
- Configure um canal de notificação de monitoramento, se ainda não tiver feito isso.
Acesse a página Integrações.
Encontre a integração com o BigQuery e clique em Ver detalhes.
Na guia Alertas, selecione Inatividade do índice de metadados da coluna: aumento percentual excessivo.
Opcional: para personalizar ainda mais esse alerta, clique em Mostrar opções > Personalizar política de alertas.
Em Configurar notificações, selecione seu canal de notificação.
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
- Saiba como conferir todos os jobs no projeto com a visualização
JOBS
. - Saiba como ver a capacidade e a utilização do slot.