Ansicht RESERVATIONS_TIMELINE

In der Ansicht INFORMATION_SCHEMA.RESERVATIONS_TIMELINE werden für jede Minute Zeitschlitze von Reservierungsmetadaten in Echtzeit für jedes Reservierungsadministratorprojekt angezeigt. Außerdem enthält das Array per_second_details Details zum Autoscaling für jede Sekunde.

Erforderliche Berechtigung

Zum Abfragen der INFORMATION_SCHEMA.RESERVATIONS_TIMELINE-Ansicht benötigen Sie die IAM-Berechtigung (Identity and Access Management) bigquery.reservations.list 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 in den letzten 180 Tagen und eine Zeile für jede Minute mit Reservierungsänderungen für alle Vorkommen, 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

Enthält Informationen zur Autoscaling-Kapazität der Reservierung. Zu den Feldern gehören:

  • current_slots: die Anzahl der Autoscaling-Slots, die für die Reservierung verfügbar sind.
  • max_slots: die maximale Anzahl an Slots, die der Reservierung durch Autoscaling hinzugefügt werden können.
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 von 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 Beginn dieses einminütigen Zeitraums.
per_second_details STRUCT

Enthält Informationen zur Reservierungskapazität und -nutzung pro Sekunde. Zu den Feldern gehören:

  • start_time: der genaue Zeitstempel der Sekunde.
  • autoscale_current_slots: die Anzahl der Autoscaling-Slots, die der Reservierung in dieser Sekunde zur Verfügung stehen. Diese Zahl enthält keine Baseline-Slots.
  • autoscale_max_slots: die maximale Anzahl an Slots, die der Reservierung durch Autoscaling in dieser Sekunde hinzugefügt werden können. Diese Zahl enthält keine Baseline-Slots.
  • slots_assigned: die Anzahl der Slots, die dieser Reservierung in dieser Sekunde zugewiesen sind. Sie entspricht der Referenzslotkapazität einer Reservierung.
  • slots_max_assigned: die maximale Slot-Kapazität für diese Reservierung, einschließlich Slot-Freigabe. Wenn ignore_idle_slots „true“ ist, ist dieses Feld mit slots_assigned identisch. Andernfalls ist dieses Feld entweder die Gesamtzahl der Slots in allen Kapazitätszusicherungen oder in allen Baselines im Administrationsprojekt, je nachdem, welcher Wert größer ist.
  • borrowed_slots: die Anzahl der Slots, die aus der Freigabe inaktiver Slots verwendet werden. Wird nur ausgefüllt, wenn ignore_idle_slots „false“ ist und in dieser Sekunde inaktive Slots verwendet wurden.
  • lent_slots: die Anzahl der Slots, die andere Reservierungen aus dem Pool der Basisslots dieser Reservierung verwenden. Wird nur ausgefüllt, wenn ignore_idle_slots „false“ ist und inaktive Slots in dieser Sekunde von anderen Reservierungen verwendet wurden.

Wenn während dieser Minute Autoscaling- oder Reservierungsänderungen vorgenommen werden, 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 dieselbe Zahl 60-mal wiederholt werden würde.

project_id STRING ID des Reservierungsverwaltungsprojekts.
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
slot_capacity INTEGER Die Referenzslotkapazität 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, ist dies das gleiche wie slots_assigned, andernfalls ist dies die Gesamtzahl der Slots in allen Kapazitätszusicherungen des Administrationsprojekts.
max_slots INTEGER Die maximale Anzahl von Slots, die diese Reservierung verwenden kann, einschließlich Referenz-Slots (slot_capacity), inaktiver Slots (wenn ignore_idle_slots „false“ ist) und Autoscaling-Slots. Dieses Feld wird von Nutzern für die Verwendung der Funktion zur Vorhersagbarkeit von Reservierungen angegeben.
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 für die Verwendung der Funktion zur Vorhersagbarkeit von Reservierungen angegeben.
period_autoscale_slot_seconds INTEGER Die Gesamtzahl der Slot-Sekunden, die für eine bestimmte Minute durch Autoscaling in Rechnung gestellt werden (jede Datenzeile entspricht einer Minute).
is_creation_region BOOLEAN

Gibt an, ob die aktuelle Region der Standort ist, an dem die Reservierung erstellt wurde. Dieser Standort wird verwendet, um die Preise für die Referenzreservierungsslots zu bestimmen. Bei einer Notfallwiederherstellungs-Reservierung für ein Failover gibt ein TRUE-Wert den ursprünglichen primären Standort an, während bei einer Reservierung, die nicht für die Notfallwiederherstellung bestimmt ist, ein TRUE-Wert den Standort der Reservierung angibt.

Bei einer Reservierung ohne Failover ist dieser Wert immer TRUE. Bei einer Failover-Reservierung hängt der Wert von der Region ab: TRUE für die ursprüngliche primäre und FALSE für die ursprüngliche sekundäre.

Aus Gründen der Stabilität empfehlen wir, Spalten in Ihren Informationsschemaabfragen explizit aufzulisten, anstatt einen Platzhalter (SELECT *) zu verwenden. Durch das explizite Auflisten von Spalten 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
Dabei gilt:
  • Optional: PROJECT_ID: die ID Ihres Cloud de Confiance -Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.
  • REGION: ist ein beliebiger Dataset-Regionsname. Beispiel: `region-us`

Beispiele

Beispiel: Autoscaling pro Sekunde ansehen

Das folgende Beispiel zeigt das sekundengenaue Autoscaling von YOUR_RESERVATION_ID für alle Jobs:

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

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
Beispiel: `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

Das folgende Beispiel zeigt die Slotnutzung pro Sekunde aus Projekten, 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             |
+-----------------------+----------------+---------------------+--------------------------+------------------------------+