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:

  1. Desative a atualização automática.

  2. 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:

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:

  1. 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.
  2. Verifique a atualização da vista materializada.
  3. 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.