Ansicht RESERVATIONS_TIMELINE
In der Ansicht INFORMATION_SCHEMA.RESERVATIONS_TIMELINE werden Segmente von Reservierungsmetadaten für jedes Reservierungs-Administratorprojekt für jede Minute in Echtzeit angezeigt. Außerdem enthält das Array per_second_details Details zum Autoscaling für jede Sekunde.
Erforderliche Berechtigung
Zum Abfragen der Ansicht INFORMATION_SCHEMA.RESERVATIONS_TIMELINE benötigen Sie die IAM-Berechtigung bigquery.reservations.list (Identity and Access Management) für das Projekt.
Jede der folgenden vordefinierten IAM-Rollen enthält die erforderliche Berechtigung:
- BigQuery-Ressourcenadministrator (
roles/bigquery.resourceAdmin) - BigQuery-Ressourcenbearbeiter (
roles/bigquery.resourceEditor) - BigQuery-Ressourcenbetrachter (
roles/bigquery.resourceViewer) - BigQuery-Nutzer (
roles/bigquery.user) - BigQuery-Administrator (
roles/bigquery.admin)
Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter BigQuery-IAM-Rollen und -Berechtigungen.
Schema
Wenn Sie die Ansicht INFORMATION_SCHEMA.RESERVATIONS_TIMELINE abfragen, enthalten die Ergebnisse eine Zeile für jede Minute jeder BigQuery-Reservierung der letzten 180 Tage und eine Zeile für jede Minute mit Reservierungsänderungen für alle Ereignisse, die älter als 180 Tage sind. Jeder Zeitraum beginnt mit einem ganzen Minutenintervall und entspricht genau einer Minute.
Die Ansicht INFORMATION_SCHEMA.RESERVATIONS_TIMELINE hat das folgende Schema:
| Spaltenname | Datentyp | Wert |
|---|---|---|
autoscale |
STRUCT |
Informationen zur Autoscaling-Kapazität der Reservierung. Zu den Feldern gehören:
|
edition |
STRING |
Die mit dieser Reservierung verknüpfte Edition. Weitere Informationen zu Editionen finden Sie unter Einführung in BigQuery-Editionen. |
ignore_idle_slots |
BOOL |
„False“, wenn die Slot-Freigabe aktiviert ist, andernfalls „true“. |
labels |
RECORD |
Array mit Labels, die mit der Reservierung verknüpft sind. |
reservation_group_path |
ARRAY<STRING> |
Die Reservierungsgruppe, mit der die Reservierung verknüpft ist.
Wenn die Reservierung beispielsweise mit der Gruppe my-group, verknüpft ist, enthält das Feld reservation_group_path eine Liste wie [my-group]. |
period_start |
TIMESTAMP |
Startzeit dieses einminütigen Zeitraums. |
per_second_details |
STRUCT |
Enthält Informationen zur Reservierungskapazität und -nutzung pro Sekunde. Zu den Feldern gehören:
Wenn es während dieser Minute Änderungen am Autoscaling oder an der Reservierung gibt, wird das Array mit 60 Zeilen gefüllt. Bei Reservierungen ohne Autoscaling, die während dieser Minute unverändert bleiben, ist das Array jedoch leer, da sonst 60 Mal dieselbe Zahl wiederholt würde. |
project_id |
STRING |
ID des Reservierungs-Administratorprojekts. |
project_number |
INTEGER |
Nummer des Projekts. |
reservation_id |
STRING |
Für die Verknüpfung mit der Tabelle "jobs_timeline". Hat das Format project_id:location.reservation_name. |
reservation_name |
STRING |
Der Name der Reservierung |
slots_assigned |
INTEGER |
Die Anzahl der dieser Reservierung zugewiesenen Slots. |
slots_max_assigned |
INTEGER |
Die maximale Slot-Kapazität für diese Reservierung, einschließlich Slot
Freigabe. Wenn ignore_idle_slots „true“ ist, entspricht dieses Feld slots_assigned. Andernfalls ist es die Gesamtzahl der Slots in allen Kapazitätszusicherungen des Administrationsprojekts. |
max_slots |
INTEGER |
Die maximale Anzahl an Slots, die diese Reservierung verwenden kann. Dazu gehören
Referenz-Slots (slot_capacity), inaktive Slots (wenn ignore_idle_slots „false“ ist) und
Autoscaling-Slots. Dieses Feld wird von Nutzern angegeben, um die Funktion zur Vorhersage von Reservierungen zu verwenden. |
scaling_mode |
STRING |
Der Skalierungsmodus für die Reservierung, der bestimmt, wie die Reservierung von der Referenz auf max_slots skaliert wird. Dieses Feld wird von Nutzern angegeben, um die Funktion zur Vorhersage von Reservierungen zu verwenden. |
period_autoscale_slot_seconds |
INTEGER |
Die Gesamtzahl der Slot-Sekunden, die durch Autoscaling für eine bestimmte Minute in Rechnung gestellt werden (jede Datenzeile entspricht einer Minute). |
is_creation_region |
BOOLEAN |
Gibt an, ob die aktuelle Region der Ort ist, an dem die Reservierung erstellt wurde. Dieser Ort wird verwendet, um die Preise für die Referenz-Reservierungsslots zu bestimmen. Bei einer Failover-Notfallwiederherstellungs-Reservierung gibt der Wert Bei einer Reservierung ohne Failover ist dieser Wert immer |
Aus Stabilitätsgründen empfehlen wir, Spalten in Ihren Informationsschema-Abfragen explizit aufzulisten, anstatt einen Platzhalter (SELECT *) zu verwenden. So wird verhindert, dass Abfragen fehlschlagen, wenn sich das zugrunde liegende Schema ändert.
Bereich und Syntax
Für Abfragen dieser Ansicht muss ein Regions-Qualifier verwendet werden. Wenn Sie keinen Regions-Qualifier angeben, werden Metadaten aus allen Regionen abgerufen. In der folgenden Tabelle werden der Regionsbereich und der Ressourcenbereich für diese Ansicht erläutert:
| Ansichtsname | Ressourcenbereich | Regionsbereich |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] |
Projektebene | REGION |
-
Optional:
PROJECT_ID: die ID Ihres Google Cloud Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet. -
REGION: ist ein beliebiger Dataset-Regionsname. Beispiel:`region-us`.
Beispiele
Beispiel: Autoscaling pro Sekunde ansehen
Im folgenden Beispiel wird das Autoscaling pro Sekunde von YOUR_RESERVATION_ID für alle Jobs gezeigt:
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
Das Ergebnis sieht etwa so aus:
+---------------------+-------------------------+ | 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 | +---------------------+-------------------------+
Beispiel: Gesamte Slot-Nutzung pro Sekunde ansehen
Wenn Sie die Abfrage für ein anderes Projekt als Ihr Standardprojekt ausführen möchten, fügen Sie die Projekt-ID im folgenden Format hinzu:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.
Im folgenden Beispiel wird die Slot-Nutzung pro Sekunde aus Projekten gezeigt, die YOUR_RESERVATION_ID zugewiesen sind (für alle Jobs übergreifend):
SELECT jobs.period_start, SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds, ANY_VALUE(COALESCE(s.slots_assigned, res.slots_assigned)) AS estimated_slots_assigned, ANY_VALUE(COALESCE(s.slots_max_assigned, 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 AND TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start LEFT JOIN UNNEST(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;
Das Ergebnis sieht etwa so aus:
+-----------------------+---------------------+--------------------------+------------------------------+ | 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 | +-----------------------+---------------------+--------------------------+------------------------------+
Beispiel: Slot-Nutzung nach Reservierung
Im folgenden Beispiel wird die Slot-Nutzung pro Sekunde für jede Reservierung des letzten Tages gezeigt:
SELECT jobs.period_start, res.reservation_id, SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds, ANY_VALUE(COALESCE(s.slots_assigned, res.slots_assigned)) AS estimated_slots_assigned, ANY_VALUE(COALESCE(s.slots_max_assigned, 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 AND TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start LEFT JOIN UNNEST(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;
Das Ergebnis sieht etwa so aus:
+-----------------------+----------------+---------------------+--------------------------+------------------------------+ | 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 | +-----------------------+----------------+---------------------+--------------------------+------------------------------+