Indexação de metadados para tabelas do BigQuery
Este documento descreve a indexação de metadados de colunas no BigQuery e explica como atribuir recursos dedicados para melhorar a atualização dos índices e o desempenho das consultas.
O BigQuery indexa automaticamente os metadados das tabelas do BigQuery que excedam 1 GiB. Estes metadados incluem a localização do ficheiro, informações de partição e atributos ao nível da coluna, que o BigQuery usa para otimizar e acelerar as suas consultas.
Por predefinição, a indexação de metadados no BigQuery é uma operação em segundo plano gratuita e não requer qualquer ação da sua parte. No entanto, a atualização do índice depende dos recursos gratuitos disponíveis e não tem objetivos ao nível do serviço (SLOs) de desempenho. Se a atualização do índice for fundamental para o seu exemplo de utilização, recomendamos que configure uma reserva BACKGROUND
.
Veja a hora de atualização do índice de metadados
Para ver a hora da última atualização do índice de metadados de uma tabela, consulte a coluna LAST_METADATA_INDEX_REFRESH_TIME
da vista INFORMATION_SCHEMA.TABLE_STORAGE
.
Para o fazer, siga estes passos:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
SELECT project_id, project_number, table_name, last_metadata_index_refresh_time FROM [
PROJECT_ID
.]region-REGION
.INFORMATION_SCHEMA.TABLE_STORAGE;Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto Google Cloud . Se não for especificado, é usado o projeto predefinido.REGION
: a região onde o projeto está localizado, por exemplo,region-us
.
Clique em
Executar.
Veja a utilização do índice de metadados das colunas
Para ver se o índice de metadados da coluna foi usado após a conclusão de uma tarefa, verifique a propriedade TableMetadataCacheUsage
do recurso Job. Se o campo unusedReason
estiver vazio (não preenchido), foi usado o índice de metadados da coluna. Se estiver preenchido, o campo explanation
associado indica o motivo pelo qual o índice de metadados da coluna não foi usado.
Também pode ver a utilização do índice de metadados das colunas com o campo metadata_cache_statistics
na vista INFORMATION_SCHEMA.JOBS
.
Por exemplo, o seguinte apresenta a utilização do índice de metadados da coluna para a tarefa:my-job
SELECT metadata_cache_statistics FROM `region-US`.INFORMATION_SCHEMA.JOBS WHERE job_id = 'my-job';
Como outro exemplo, o seguinte apresenta o número de trabalhos 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;
Configure recursos de indexação dedicados
Para configurar recursos para atualizações de indexação de metadados no seu projeto, primeiro tem de ter uma reserva atribuída ao projeto. Para o fazer, siga estes passos:
Depois de configurar a reserva, selecione um dos seguintes métodos para atribuir ranhuras à tarefa de indexação de metadados. Por predefinição, os espaços que atribui desta forma são partilhados com outros trabalhos se estiverem inativos. Para mais informações, consulte Espaços inativos.
Consola
Na Google Cloud consola, aceda à página Gestão de capacidade.
Clique em > Criar atribuição.
Ações de reservaSelecione o projeto de reserva.
Defina o Tipo de tarefa 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 o seguinte:
ADMIN_PROJECT_ID
: o ID do projeto do projeto de administração que detém o recurso de reserva.LOCATION
: a localização da reserva.RESERVATION_NAME
: o nome da reserva.PROJECT_ID
: o ID do projeto a atribuir a esta reserva.
SQL
Para atribuir uma reserva a um projeto, use a declaração DDL CREATE ASSIGNMENT
.
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
Substitua o seguinte: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 detém o recurso de reserva.LOCATION
: a localização da reserva.RESERVATION_NAME
: o nome da reserva.ASSIGNMENT_ID
: o ID da atribuição. O ID tem de ser exclusivo do projeto e da localização, 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.
Veja informações sobre a tarefa de indexação
Depois de configurar as tarefas de indexação dedicadas, pode ver informações
sobre as tarefas de indexação com a vista
JOBS
.
O exemplo de SQL seguinte mostra as cinco tarefas 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 as suas tarefas de indexação de metadados.
Configure alertas de indexação de metadados
O processo de alerta do Cloud Monitoring envia-lhe uma notificação quando o desempenho do BigQuery não cumpre os critérios definidos. Para mais informações, consulte o artigo Vista geral dos alertas. Com a indexação de metadados, pode configurar alertas para a utilização de slots e dados desatualizados.
Alerta de utilização de slots
Este alerta envia-lhe uma notificação quando a sua reserva em segundo plano excede uma percentagem definida da respetiva atribuição. O valor predefinido é 95%. Pode configurar este alerta para uma reserva específica ou para todas as reservas em segundo plano. Quando este alerta é acionado, recomendamos que aumente o tamanho da reserva.
Para configurar este alerta para todas as reservas em segundo plano, faça o seguinte:
- Configure um canal de notificação de monitorização, caso ainda não o tenha feito.
Aceda à página Integrações.
Encontre a integração do BigQuery e clique em Ver detalhes.
No separador Alertas, selecione Utilização de espaços: utilização de espaços da cache de metadados em segundo plano demasiado elevada.
Opcional: para personalizar ainda mais este alerta, clique em Mostrar opções > Personalizar política de alertas.
Para Configurar notificações, selecione o canal de notificação.
Clique em Criar.
Alerta de desatualização
Este alerta envia-lhe uma notificação quando a desatualização do índice de metadados da coluna média aumenta demasiado em comparação com a média existente. O limite predefinido é se a média durante 4 horas for mais do dobro da média anterior durante mais de 30 minutos. Quando este alerta é acionado, recomendamos que aumente o tamanho da reserva ou crie uma reserva em segundo plano se não tiver nenhuma.
Para configurar este alerta, faça o seguinte:
- Configure um canal de notificação de monitorização, caso ainda não o tenha feito.
Aceda à página Integrações.
Encontre a integração do BigQuery e clique em Ver detalhes.
No separador Alertas, selecione Obsoleto do índice de metadados de colunas: aumento percentual excessivo.
Opcional: para personalizar ainda mais este alerta, clique em Mostrar opções > Personalizar política de alertas.
Para Configurar notificações, selecione o canal de notificação.
Clique em Criar.
Limitações
Os melhoramentos do desempenho das consultas de metadados aplicam-se apenas às declarações SELECT
, INSERT
e CREATE TABLE AS SELECT
. As declarações da linguagem de manipulação de dados (DML) não vão ver melhorias da indexação de metadados.
O que se segue?
- Saiba como ver todas as tarefas no seu projeto com a vista
JOBS
. - Saiba como ver a capacidade e a utilização dos espaços.