Visualizzazione RESERVATIONS_TIMELINE

La visualizzazione INFORMATION_SCHEMA.RESERVATIONS_TIMELINE mostra le sezioni temporali dei metadati di prenotazione per ogni progetto di amministrazione delle prenotazioni per ogni minuto in tempo reale. Inoltre, l'array per_second_details mostra i dettagli della scalabilità automatica per ogni secondo.

Autorizzazione obbligatoria

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.RESERVATIONS_TIMELINE, devi disporre dell'autorizzazione Identity and Access Management (IAM) bigquery.reservations.list per il progetto. Ciascuno dei seguenti ruoli IAM predefiniti include l'autorizzazione richiesta:

  • Amministratore risorse BigQuery (roles/bigquery.resourceAdmin)
  • BigQuery Resource Editor (roles/bigquery.resourceEditor)
  • Visualizzatore risorse BigQuery (roles/bigquery.resourceViewer)
  • Utente BigQuery (roles/bigquery.user)
  • Amministratore BigQuery (roles/bigquery.admin)

Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Ruoli e autorizzazioni IAM di BigQuery.

Schema

Quando esegui una query sulla visualizzazione INFORMATION_SCHEMA.RESERVATIONS_TIMELINE, i risultati della query contengono una riga per ogni minuto di ogni prenotazione BigQuery negli ultimi 180 giorni e una riga per ogni minuto con modifiche alla prenotazione per gli eventi precedenti a 180 giorni. Ogni periodo inizia a un intervallo di un minuto intero e dura esattamente un minuto.

La vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE ha lo schema seguente:

Nome colonna Tipo di dati Valore
autoscale STRUCT

Contiene informazioni sulla capacità di scalabilità automatica della prenotazione. I campi includono:

  • current_slots: il numero di slot aggiunti alla prenotazione tramite la scalabilità automatica.
  • max_slots: il numero massimo di slot che potrebbero essere aggiunti alla prenotazione tramite la scalabilità automatica.
edition STRING La versione associata a questa prenotazione. Per ulteriori informazioni sulle versioni, vedi Introduzione alle versioni di BigQuery.
ignore_idle_slots BOOL Falso se la condivisione di slot è abilitata, vero in caso contrario.
labels RECORD Array di etichette associate alla prenotazione.
reservation_group_path STRING La struttura gerarchica del gruppo a cui è collegata la prenotazione. Ad esempio, se la struttura del gruppo include un gruppo principale e un gruppo secondario, il campo reservation_group_path contiene un elenco come: [parent group, child group]. Questo campo è in anteprima.
period_start TIMESTAMP Ora di inizio di questo periodo di un minuto.
per_second_details STRUCT

Contiene informazioni sulla capacità e sull'utilizzo della prenotazione ogni secondo. I campi includono:

  • start_time: il timestamp esatto del secondo.
  • autoscale_current_slots: il numero di slot aggiunti alla prenotazione tramite la scalabilità automatica in questo secondo. Questo numero esclude gli slot di base.
  • autoscale_max_slots: il numero massimo di slot che potrebbero essere aggiunti alla prenotazione tramite la scalabilità automatica in questo secondo. Questo numero esclude gli slot di base.
  • slots_assigned: il numero di slot assegnati a questa prenotazione in questo secondo. Equivale alla capacità slot di riferimento di una prenotazione.
  • slots_max_assigned: la capacità massima degli slot per questa prenotazione, inclusa la condivisione degli slot in questo secondo. Se ignore_idle_slots è true, questo campo è uguale a slots_assigned. In caso contrario, il campo slots_max_assigned indica il numero totale di slot in tutti gli impegni di capacità nel progetto di amministrazione.

Se durante questo minuto vengono apportate modifiche alla scalabilità automatica o alla prenotazione, l'array viene compilato con 60 righe. Tuttavia, per le prenotazioni non scalabili automaticamente che rimangono invariate durante questo minuto, l'array è vuoto perché altrimenti ripeterebbe lo stesso numero 60 volte.

project_id STRING ID del progetto di amministrazione delle prenotazioni.
project_number INTEGER Numero del progetto.
reservation_id STRING Per l'unione con la tabella jobs_timeline. Ha il formato project_id:location.reservation_name.
reservation_name STRING Il nome della prenotazione.
slots_assigned INTEGER Il numero di slot assegnati a questa prenotazione.
slots_max_assigned INTEGER La capacità massima degli slot per questa prenotazione, inclusa la condivisione degli slot. Se ignore_idle_slots è true, questo valore è uguale a slots_assigned, altrimenti è il numero totale di slot in tutti gli impegni di capacità nel progetto di amministrazione.
max_slots INTEGER Il numero massimo di slot che questa prenotazione può utilizzare, che include slot di riferimento (slot_capacity), slot inattivi (se ignore_idle_slots è false) e slot con scalabilità automatica. Questo campo viene specificato dagli utenti per l'utilizzo della funzionalità di prevedibilità della prenotazione.
scaling_mode STRING La modalità di scalabilità per la prenotazione, che determina il modo in cui la prenotazione viene scalata dalla baseline a max_slots. Questo campo viene specificato dagli utenti per l'utilizzo della funzionalità di prevedibilità della prenotazione.
period_autoscale_slot_seconds INTEGER Il totale dei secondi di slot addebitati dalla scalabilità automatica per un minuto specifico (ogni riga di dati corrisponde a un minuto).
is_creation_region BOOLEAN

Specifica se la regione attuale è la località in cui è stata creata la prenotazione. Questa località viene utilizzata per determinare il prezzo degli slot di prenotazione di riferimento. Per una prenotazione di recupero di emergenza (RE) di failover, un valore TRUE indica la località primaria originale, mentre per una prenotazione non di RE, un valore TRUE indica la località della prenotazione.

Per una prenotazione non di failover, questo valore è sempre TRUE. Per una prenotazione di failover, il valore dipende dalla regione: TRUE per la regione principale originale e FALSE per la regione secondaria originale.

Per garantire la stabilità, ti consigliamo di elencare esplicitamente le colonne nelle query dello schema informativo anziché utilizzare un carattere jolly (SELECT *). L'elenco esplicito delle colonne impedisce l'interruzione delle query se lo schema sottostante cambia.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore di regione. Se non specifichi un qualificatore regionale, i metadati vengono recuperati da tutte le regioni. La tabella seguente spiega l'ambito della regione e delle risorse per questa visualizzazione:

Nome vista Ambito risorsa Ambito regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] Livello progetto REGION
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito.
  • REGION: qualsiasi nome della regione del set di dati. Ad esempio: `region-us`.

Esempi

Esempio: visualizzare la scalabilità automatica al secondo

L'esempio seguente mostra la scalabilità automatica al secondo di YOUR_RESERVATION_ID in tutti i job:

SELECT s.start_time, s.autoscale_current_slots
FROM `region-us.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE` m
JOIN m.per_second_details s
WHERE period_start BETWEEN '2025-09-28' AND '2025-09-29'
  AND reservation_id = 'YOUR_RESERVATION_ID'
ORDER BY period_start, s.start_time

Il risultato è simile al seguente:

+---------------------+-------------------------+
|     start_time      | autoscale_current_slots |
+---------------------+-------------------------+
| 2025-09-28 00:00:00 |                    1600 |
| 2025-09-28 00:00:01 |                    1600 |
| 2025-09-28 00:00:02 |                    1600 |
| 2025-09-28 00:00:03 |                    1600 |
| 2025-09-28 00:00:04 |                    1600 |
+---------------------+-------------------------+

Esempio: visualizzare l'utilizzo totale degli slot al secondo

Per eseguire la query su un progetto diverso da quello predefinito, aggiungi l'ID progetto nel seguente formato:

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
Ad esempio, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

Il seguente esempio mostra l'utilizzo degli slot al secondo dei progetti assegnati a YOUR_RESERVATION_ID in tutti i job:

SELECT
  s.start_time AS period_start,
  SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds,
  ANY_VALUE(s.slots_assigned) AS estimated_slots_assigned,
  ANY_VALUE(s.slots_max_assigned) AS estimated_slots_max_assigned
FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
    ON jobs.reservation_id = res.reservation_id
 JOIN res.per_second_details s
    ON jobs.period_start = s.start_time
WHERE
  jobs.job_creation_time
    BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
        AND CURRENT_TIMESTAMP()
  AND res.period_start
    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;

Il risultato è simile al seguente:

+-----------------------+---------------------+--------------------------+------------------------------+
|     period_start      | period_slot_seconds | estimated_slots_assigned | estimated_slots_max_assigned |
+-----------------------+---------------------+--------------------------+------------------------------+
|2021-06-08 21:33:59 UTC|       100.000       |         100              |           100                |
|2021-06-08 21:33:58 UTC|        96.753       |         100              |           100                |
|2021-06-08 21:33:57 UTC|        41.668       |         100              |           100                |
+-----------------------+---------------------+--------------------------+------------------------------+

Esempio: utilizzo degli slot per prenotazione

L'esempio seguente mostra l'utilizzo degli slot al secondo per ogni prenotazione nell'ultimo giorno:

SELECT
  s.start_time AS period_start,
  res.reservation_id,
  SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds,
  ANY_VALUE(res.slots_assigned) AS estimated_slots_assigned,
  ANY_VALUE(res.slots_max_assigned) AS estimated_slots_max_assigned,
FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
  ON jobs.reservation_id = res.reservation_id
JOIN res.per_second_details s
  ON jobs.period_start = s.start_time
WHERE
  jobs.job_creation_time
      BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
          AND CURRENT_TIMESTAMP()
  AND res.period_start
      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;

Il risultato è simile al seguente:

+-----------------------+----------------+---------------------+--------------------------+------------------------------+
|     period_start      | reservation_id | period_slot_seconds | estimated_slots_assigned | estimated_slots_max_assigned |
+-----------------------+----------------+---------------------+--------------------------+------------------------------+
|2021-06-08 21:33:59 UTC|     prod01     |       100.000       |             100          |              100             |
|2021-06-08 21:33:58 UTC|     prod02     |       177.201       |             200          |              500             |
|2021-06-08 21:32:57 UTC|     prod01     |        96.753       |             100          |              100             |
|2021-06-08 21:32:56 UTC|     prod02     |       182.329       |             200          |              500             |
+-----------------------+----------------+---------------------+--------------------------+------------------------------+