Visualização da RESERVATIONS_TIMELINE
A visualização INFORMATION_SCHEMA.RESERVATIONS_TIMELINE
mostra tempos quase em tempo real dos metadados de reserva para cada projeto de administrador de reserva a cada minuto. Para comparar o uso de slots com a capacidade de slots, é possível combinar as informações de reserva com o cronograma de jobs usando a visualização do cronograma de reservas.
Esquema
Quando você consulta as visualizações INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_*
, os resultados da consulta
contêm uma linha para cada minuto de cada reserva do BigQuery nos últimos 180 dias e uma linha para cada minuto com mudanças
de reserva para ocorrências com mais de 180 dias. Cada período começa no intervalo de um minuto cheio e dura exatamente
um minuto.
A visualização INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_PROJECT
tem o seguinte esquema:
Nome da coluna | Tipo de dados | Valor |
---|---|---|
autoscale |
STRUCT |
Informações sobre a capacidade de escalonamento automático da reserva. Os campos incluem:
|
edition |
STRING |
A edição associada a esta reserva. Para mais informações sobre edições, consulte Introdução às edições do BigQuery. |
ignore_idle_slots |
BOOL |
Falso se o compartilhamento de slots estiver ativado. Caso contrário, será verdadeiro. |
period_start |
TIMESTAMP |
Horário de início deste período de um minuto. |
project_id |
STRING |
ID do projeto de administrador da reserva. |
project_number |
INTEGER |
Número do projeto. |
reservation_id |
STRING |
Para mesclar com a tabela jobs_timeline. Ele está no formato project_id:location.reservation_name. |
reservation_name |
STRING |
O nome da reserva. |
slots_assigned |
INTEGER |
O número de slots atribuídos a esta reserva. |
slots_max_assigned |
INTEGER |
A capacidade máxima de slots dessa reserva, incluindo o compartilhamento de
slots. Se ignore_idle_slots for verdadeiro, é o mesmo que slots_assigned . Caso contrário, será o número total de slots em todos os compromissos de capacidade no projeto administrativo. |
Escopo e sintaxe
As consultas nessa visualização precisam incluir um qualificador de região. Se você não especificar um qualificador regional, os metadados serão recuperados de todas as regiões. A tabela a seguir explica a região e o escopo de recursos dessa visualização:
Nome da visualização | Escopo do recurso | Escopo da região |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] |
Nível do projeto | REGION |
Opcional: PROJECT_ID
: o ID do seu
projeto do Google Cloud. Se não for especificado, o projeto padrão será usado.
REGION
: qualquer nome da região do conjunto de dados.
Por exemplo, `region-us`
.
Exemplos
Exemplo: ver o uso total de slots por minuto.
Para executar a consulta em um projeto diferente do projeto padrão, adicione o ID do projeto no seguinte formato:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
.
O exemplo a seguir mostra o uso de slots a cada minuto por projetos atribuídos a
YOUR_RESERVATION_ID
em todos os jobs.
SELECT res.period_start, SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes, ANY_VALUE(res.slots_assigned) AS slot_assigned, ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start AND jobs.reservation_id = res.reservation_id WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND res.reservation_id = 'YOUR_RESERVATION_ID' AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL) -- Avoid duplicate byte counting in parent and children jobs. GROUP BY period_start ORDER BY period_start DESC;
O resultado será semelhante ao seguinte:
+-----------------------+---------------------+---------------+-------------------+ | period_start | period_slot_minutes | slots_assigned| slots_max_assigned| +-----------------------+---------------------+---------------+-------------------+ |2021-06-08 21:33:00 UTC| 100.000 | 100 | 100 | |2021-06-08 21:32:00 UTC| 96.753 | 100 | 100 | |2021-06-08 21:31:00 UTC| 41.668 | 100 | 100 | +-----------------------+---------------------+---------------+-------------------+
Exemplo: uso de slots por reserva.
O exemplo a seguir mostra o uso de slots a cada minuto por cada reserva no último dia.
SELECT res.period_start, res.reservation_id, SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes, ANY_VALUE(res.slots_assigned) AS slots_assigned, ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned, FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start AND jobs.reservation_id = res.reservation_id WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL) -- Avoid duplicate byte counting in parent and children jobs. GROUP BY period_start, reservation_id ORDER BY period_start DESC, reservation_id;
O resultado será semelhante ao seguinte:
+-----------------------+----------------+---------------------+---------------+--------------------+ | period_start | reservation_id | period_slot_minutes | slot_assigned | slots_max_assigned | +-----------------------+----------------+---------------------+---------------+--------------------+ |2021-06-08 21:33:00 UTC| prod01 | 100.000 | 100 | 100 | |2021-06-08 21:33:00 UTC| prod02 | 177.201 | 200 | 500 | |2021-06-08 21:32:00 UTC| prod01 | 96.753 | 100 | 100 | |2021-06-08 21:32:00 UTC| prod02 | 182.329 | 200 | 500 | +-----------------------+----------------+---------------------+---------------+--------------------+