Monitorize vistas materializadas
Pode monitorizar a utilização e as tarefas de atualização da vista materializada
ao ver a vista INFORMATION_SCHEMA
do BigQuery. Para criar uma lista de vistas materializadas, consulte o artigo
Liste as vistas materializadas.
Vista INFORMATION_SCHEMA
materializada
Para descobrir vistas materializadas, consulte a INFORMATION_SCHEMA.TABLES
vista. Para obter as propriedades de uma visualização materializada, consulte a visualização INFORMATION_SCHEMA.TABLE_OPTIONS
.
As vistas materializadas não são apresentadas na tabela INFORMATION_SCHEMA.VIEWS
vistas.
Monitorize a atualização automática
Esta secção mostra como ver os detalhes da atualização das vistas materializadas.
Veja o estado da última atualização
Para obter o estado atual das vistas materializadas, chame o método tables.get
ou consulte a vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS
.
Por 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
, significa que a última tarefa de atualização automática falhou. Os pedidos de atualização manual não são refletidos aqui. As alterações às tabelas base podem invalidar uma definição de vista materializada, o que resulta num erro durante a atualização automática. Para mais informações, consulte o artigo Atualizações
incrementais. Por exemplo, se uma coluna referenciada pela vista materializada for eliminada da tabela base, o campo last_refresh_status
devolve um erro invalidQuery
. Para mais informações, consulte o artigo Mensagens de erro.
Liste tarefas de atualização automática
Para listar tarefas de atualização automática de vistas materializadas, chame o método jobs.list
. Para obter detalhes sobre as tarefas, chame o método jobs.get
. Também pode consultar as vistas INFORMATION_SCHEMA.JOBS_BY_*
para obter os trabalhos. As tarefas de atualização automática contêm o prefixo materialized_view_refresh
no ID da tarefa e são iniciadas por uma conta de administrador do BigQuery.
Por 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 monitorizar o custo das tarefas 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 carregamento nas tabelas base for relativamente pequena, faz sentido atualizar a vista com menos frequência. Se os dados subjacentes mudarem rapidamente, faz sentido atualizá-los com maior frequência.
Se as tabelas de base introduzem dados em pontos predefinidos no tempo, como através de um pipeline de extração, transformação e carregamento (ETL) noturno, considere assumir o controlo do horário de manutenção da vista materializada da seguinte forma:
Faça uma atualização manual, quer como parte do pipeline de ETL, quer configurando uma consulta agendada em horas específicas do dia.
Para mais informações sobre os preços das vistas materializadas, consulte os preços das vistas materializadas.
Monitorize a utilização da vista materializada
Para ver a utilização da vista materializada para uma tarefa de consulta, pode chamar o método jobs.get
ou consultar a vista INFORMATION_SCHEMA.JOBS_BY_*
e ver o campo materialized_view_statistics
. Fornece detalhes sobre a utilização de vistas materializadas pela consulta, incluindo os seguintes detalhes:
- Se a vista materializada foi usada.
- Se a vista materializada não foi usada, o motivo pelo qual foi rejeitada.
Por exemplo:
SELECT job_id, materialized_view_statistics FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = '<my-query-job-id>';
Para ver a utilização de uma vista materializada ao longo do tempo, consulte as vistas INFORMATION_SCHEMA.JOBS_BY_*
.
Por exemplo, a seguinte consulta devolve um resumo dos trabalhos de consulta recentes que usam a vista 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;
Resolva problemas de consultas lentas com vistas materializadas
Se a sua consulta usar vistas materializadas e estiver a ser executada mais lentamente do que o esperado, faça o seguinte:
- Verifique se as vistas materializadas pretendidas estão a ser usadas pela consulta. Para instruções detalhadas, consulte o artigo Monitorize a utilização da vista materializada.
- Verifique a atualização da vista materializada.
- Reveja a definição da vista materializada e os dados a que faz referência e considere técnicas para otimizar a utilização da vista materializada.