Monitorar visualizações materializadas
Monitore jobs de visualização materializada e atualize jobs na visualização INFORMATION_SCHEMA
do BigQuery. Para criar uma lista de visualizações materializadas, consulte Listar visualizações materializadas.
Visualização materializada INFORMATION_SCHEMA
Para descobrir visualizações materializadas, consulte a visualização INFORMATION_SCHEMA.TABLES
. Para recuperar as properties de uma visualização materializada, consulte a visualização INFORMATION_SCHEMA.TABLE_OPTIONS
.
As visualizações materializadas não estão listadas na tabela de visualizações INFORMATION_SCHEMA.VIEWS
.
Monitorar atualização automática
Nesta seção, mostramos como visualizar detalhes de atualização para visualizações materializadas.
Ver último status de atualização
Para recuperar o status atual de visualizações materializadas, chame o método tables.get
ou consulte a visualização INFORMATION_SCHEMA.MATERIALIZED_VIEWS
.
Exemplo:
SELECT table_name, last_refresh_time, refresh_watermark, last_refresh_status FROM `DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
Se o valor de last_refresh_status
não for NULL
, o último job de atualização automática falhou. As solicitações de atualização manual não são refletidas aqui. As alterações nas tabelas base podem invalidar uma definição de visualização materializada, resultando em um erro durante a atualização automática. Veja mais informações em Atualizações incrementais. Por exemplo, se uma coluna referenciada pela visualização materializada for removida da tabela base, o campo last_refresh_status
retornará um erro invalidQuery
. Para mais informações, consulte Mensagens de erro.
Listar jobs de atualização automática
Para listar jobs de atualização automática da visualização materializada, chame o método jobs.list
. Para recuperar detalhes sobre os jobs, chame o método jobs.get
. Também é possível consultar as visualizações INFORMATION_SCHEMA.JOBS_BY_*
para acessar os jobs. Os jobs de atualização automática contêm o prefixo materialized_view_refresh
no código da tarefa e são iniciados por uma conta de administrador do BigQuery.
Exemplo:
SELECT job_id, total_slot_ms, total_bytes_processed, materialized_view_statistics.materialized_view[SAFE_OFFSET(0)].rejected_reason AS full_refresh_reason FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%materialized_view_refresh_%' LIMIT 10;
Para monitorar o custo dos jobs de atualização e ajustar o intervalo de atualização automática, se necessário, veja os campos total_bytes_processed
e total_slot_ms
.
Por exemplo, se a taxa de ingestão na tabela base for relativamente pequena, convém atualizar a visualização com menos frequência. Se os dados subjacentes forem alterados rapidamente, convém atualizar com mais frequência.
Se as tabelas base ingerirem dados em pontos predefinidos no tempo, por exemplo, usando um pipeline noturno de extração, transformação e carregamento (ETL, na sigla em inglês), considere assumir o controle do cronograma de manutenção da visualização materializada da seguinte maneira:
Executar uma atualização manual como parte do pipeline de ETL ou configurar uma consulta programada em horários específicos do dia.
Para saber mais sobre preços de visualizações materializadas, consulte preços de visualizações materializadas.
Monitorar uso de visualizações materializadas
Para ver o uso da visualização materializada de um job de consulta, chame o método jobs.get
ou consulte a visualização INFORMATION_SCHEMA.JOBS_BY_*
e veja o campo materialized_view_statistics
. Ele mostra detalhes sobre o uso de visualizações materializadas pela consulta, incluindo os seguintes detalhes:
- Se a visualização materializada foi usada.
- Se a visualização materializada não foi usada, o motivo da rejeição.
Exemplo:
SELECT job_id, materialized_view_statistics FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = '<my-query-job-id>';
Para ver o uso de uma visualização materializada ao longo do tempo, consulte as visualizações INFORMATION_SCHEMA.JOBS_BY_*
.
Por exemplo, a consulta a seguir retorna um resumo dos jobs de consulta recentes que usam a visualização materializada de destino:
SELECT mv.table_reference.dataset_id, mv.table_reference.table_id, MAX(job.creation_time) latest_job_time, COUNT(job_id) job_count FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT job, UNNEST(materialized_view_statistics.materialized_view) mv WHERE job.creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY) AND mv.table_reference.dataset_id = 'my_dataset' AND mv.table_reference.table_id = 'my_materialized_view' AND mv.chosen = TRUE GROUP BY 1, 2;
Resolver problemas de consultas lentas com visualizações materializadas
Se a consulta usar visualizações materializadas e estiver sendo executada mais lentamente do que o esperado, faça o seguinte:
- Verifique se as visualizações materializadas pretendidas estão sendo usadas pela consulta. Para instruções detalhadas, consulte Monitorar o uso de visualizações materializadas.
- Verifique se a visualização materializada está sendo atualizada.
- Revise a definição de visualização materializada e os dados a que ela faz referência e considere as técnicas para otimizar o uso da visualização materializada.