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:
|
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:
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 Per una prenotazione non di failover, questo valore è sempre |
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 |
-
(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
`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 | +-----------------------+----------------+---------------------+--------------------------+------------------------------+