Indexação de metadados para tabelas do BigQuery
Neste documento, descrevemos a indexação de metadados de colunas no BigQuery e explicamos como alocar recursos dedicados para melhorar a atualização do índice e o desempenho das consultas.
O BigQuery indexa automaticamente os metadados de tabelas do BigQuery com mais de 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 suas consultas.
Por padrão, a indexação de metadados no BigQuery é uma operação em segundo plano gratuita e não exige nenhuma ação da sua parte. No entanto, a atualização do índice depende dos recursos gratuitos disponíveis e não tem objetivos de nível de serviço (SLOs) de desempenho. Se a atualização do índice for essencial para seu caso de uso, recomendamos configurar uma reserva de BACKGROUND, que compartilha recursos entre jobs de otimização em segundo plano.
Ver o horário da atualização do índice de metadados
Para ver 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 isso, faça o seguinte:
No console do Google 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 seu projeto do Google Cloud . 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.
Ver o uso do índice de metadados da coluna
Para verificar se o índice de metadados da coluna foi usado após a conclusão de um job, confira
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 para o índice de metadados da coluna não ter sido 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, o seguinte mostra 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, o seguinte mostra o número de jobs que usaram o índice de metadados da 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 isso, faça o seguinte:
Depois de configurar sua reserva, selecione um dos seguintes métodos para atribuir slots ao seu job de indexação de metadados. Por padrão, os slots alocados dessa maneira são compartilhados com outros jobs se estiverem inativos. Para mais informações, consulte Slots inativos.
Console
No console do Google Cloud , acesse a página Gerenciamento de capacidade.
Clique em Ações de reserva > Criar atribuição.
Selecione seu projeto de reserva.
Defina Tipo de job como Em segundo plano.
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 esta reserva.
SQL
Para atribuir uma reserva a um projeto, use a
instrução DDL CREATE ASSIGNMENT.
No console do Google 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. Ele 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.
Ver informações do job de indexação
Depois de configurar os jobs de indexação dedicados, você pode conferir informações
sobre eles com a
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 seus 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 e obsolescência de slots.
Alerta de uso de slot
Esse alerta notifica você quando sua 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 sua reserva.
Para configurar esse alerta para todas as reservas em segundo plano, faça o seguinte:
- Configure um canal de notificação do Monitoring, caso ainda não tenha feito isso.
Acesse a página Integrações.
Encontre a integração do BigQuery e clique em Ver detalhes.
Na guia Alertas, selecione Uso de slots - Uso de slots 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 média do índice de metadados da coluna aumenta muito em comparação com a média atual. O limite padrão é quando a média de quatro horas é mais do que o dobro da média anterior por mais de 30 minutos. Quando esse alerta for acionado, recomendamos que você aumente o tamanho da reserva ou crie uma reserva em segundo plano, se ainda não tiver uma.
Para configurar esse alerta, faça o seguinte:
- Configure um canal de notificação do Monitoring, caso ainda não tenha feito isso.
Acesse a página Integrações.
Encontre a integração do BigQuery e clique em Ver detalhes.
Na guia Alertas, selecione Índice de metadados de coluna desatualizado: aumento percentual 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.
Limitações
As melhorias de desempenho de consultas de metadados só se aplicam às 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 com a indexação de metadados.
A seguir
- Saiba como ver todos os jobs no seu projeto com a visualização
JOBS. - Saiba como ver a capacidade e a utilização do slot.