התצוגה RESERVATIONS_TIMELINE

בתצוגה INFORMATION_SCHEMA.RESERVATIONS_TIMELINE מוצגים קטעי זמן של מטא-נתונים של הזמנות לכל פרויקט ניהול הזמנות, לכל דקה בזמן אמת. בנוסף, המערך per_second_details מציג את פרטי ההתאמה האוטומטית של קנה המידה לכל שנייה.

ההרשאה הנדרשת

כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.RESERVATIONS_TIMELINE, צריך את ההרשאה bigquery.reservations.list לניהול זהויות והרשאות גישה (IAM) בפרויקט. כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הנדרשת:

  • אדמין של משאבי BigQuery‏ (roles/bigquery.resourceAdmin)
  • עריכת משאבים ב-BigQuery‏ (roles/bigquery.resourceEditor)
  • צפייה במשאבי BigQuery‏ (roles/bigquery.resourceViewer)
  • משתמש BigQuery‏ (roles/bigquery.user)
  • אדמין ב-BigQuery‏ (roles/bigquery.admin)

במאמר תפקידים והרשאות של IAM ב-BigQuery יש מידע נוסף על הרשאות ב-BigQuery.

סכימה

כששולחים שאילתה לתצוגה INFORMATION_SCHEMA.RESERVATIONS_TIMELINE, תוצאות השאילתה מכילות שורה אחת לכל דקה של כל הזמנה ב-BigQuery ב-180 הימים האחרונים, ושורה אחת לכל דקה עם שינויים בהזמנה לכל המופעים שנוצרו לפני יותר מ-180 יום. כל תקופה מתחילה במרווח של דקה שלמה ונמשכת בדיוק דקה אחת.

הסכימה של התצוגה INFORMATION_SCHEMA.RESERVATIONS_TIMELINE היא:

שם העמודה סוג נתונים ערך
autoscale STRUCT

מכיל מידע על הקיבולת של ההזמנה להתאמה אוטומטית לעומס. השדות כוללים את הפרטים הבאים:

  • ‫current_slots: מספר יחידות הקיבולת להתאמה אוטומטית לעומס שזמינות למקום השמור.
  • ‫max_slots: המספר המקסימלי של יחידות קיבולת (Slot) שאפשר להוסיף למקום השמור באמצעות התאמה אוטומטית לעומס (automatic scaling).
edition STRING המהדורה שמשויכת להזמנה הזו. מידע נוסף על המהדורות זמין במאמר מבוא למהדורות של BigQuery.
ignore_idle_slots BOOL ‫False אם שיתוף המשבצות מופעל, אחרת True.
labels RECORD מערך של תוויות שמשויכות להזמנה.
reservation_group_path ARRAY<STRING> קבוצת ההזמנות שאליה מקושרת ההזמנה. לדוגמה, אם ההזמנה מקושרת לקבוצה my-group, השדה reservation_group_path מכיל רשימה כמו: [my-group].
period_start TIMESTAMP שעת ההתחלה של פרק הזמן הזה של דקה אחת.
per_second_details STRUCT

מכיל מידע על הקיבולת של ההזמנה והשימוש בכל שנייה. השדות כוללים את הפרטים הבאים:

  • ‫start_time: חותמת הזמן המדויקת של השנייה.
  • ‫autoscale_current_slots: מספר יחידות הקיבולת להתאמה אוטומטית לעומס שזמינות למקום השמור בשנייה הזו. המספר הזה לא כולל משבצות בסיסיות.
  • ‫autoscale_max_slots: המספר המקסימלי של משבצות שאפשר להוסיף למאגר באמצעות התאמה אוטומטית לעומס בשנייה הזו. המספר הזה לא כולל משבצות בסיס.
  • ‫slots_assigned: מספר ה-slots שהוקצו להזמנה הזו בשנייה הזו. הוא שווה לקיבולת הבסיסית של משבצות הזמן בהזמנה.
  • ‫slots_max_assigned: קיבולת ה-slots המקסימלית של ההזמנה הזו, כולל שיתוף slots. אם הערך של ignore_idle_slots הוא true, הערך של השדה הזה יהיה זהה לערך של slots_assigned. אחרת, השדה הזה הוא המספר הכולל של המשבצות בכל ההתחייבויות לקיבולת או בכל ערכי הבסיס בפרויקט הניהול, הגדול מביניהם.
  • ‫borrowed_slots: מספר המשבצות שנעשה בהן שימוש מתוך שיתוף המשבצות הלא פעילות. השדה מאוכלס רק אם הערך של ignore_idle_slots הוא FALSE, ונעשה שימוש ביחידות קיבולת לא פעילות במהלך השנייה הזו.
  • ‫lent_slots: מספר ה-slots שבהם משתמשים בהזמנות אחרות מתוך מאגר ה-slots הבסיסיים של ההזמנה הזו. השדה הזה מאוכלס רק אם הערך של ignore_idle_slots הוא FALSE, ונעשה שימוש ביחידות קיבולת לא פעילות על ידי מקומות שמורים אחרים במהלך השנייה הזו.

אם יש שינויים בהתאמה האוטומטית או בהזמנה במהלך הדקה הזו, המערך מאוכלס ב-60 שורות. עם זאת, במאגרים ללא התאמה אוטומטית של קנה המידה שלא משתנים במהלך הדקה הזו, המערך ריק כי אחרת הוא יחזור על אותו מספר 60 פעמים.

project_id STRING מזהה הפרויקט לניהול ההזמנות.
project_number INTEGER מספר הפרויקט.
reservation_id STRING לצירוף עם הטבלה jobs_timeline. הפורמט הוא project_id:location.reservation_name.
reservation_name STRING שם ההזמנה.
slot_capacity INTEGER קיבולת ברירת המחדל של יחידות ה-Slot בהזמנה.
slots_assigned INTEGER מספר המשבצות שהוקצו להזמנה הזו.
slots_max_assigned INTEGER הקיבולת המקסימלית של משבצות הזמן בהזמנה הזו, כולל שיתוף משבצות זמן. אם הערך של ignore_idle_slots הוא True, זהה ל-slots_assigned, אחרת זהו המספר הכולל של המשבצות בכל ההתחייבויות לקיבולת בפרויקט הניהול.
max_slots INTEGER מספר ה-slots המקסימלי שאפשר להשתמש בו בהזמנה הזו, כולל ה-slots הבסיסיים (slot_capacity), ה-slots הלא פעילים (אם הערך של ignore_idle_slots הוא false) וה-slots להתאמה אוטומטית לעומס. המשתמשים מציינים את השדה הזה כדי להשתמש בתכונה "יכולת חיזוי של הזמנות".
scaling_mode STRING מצב ההתאמה לעומס (scaling) של ההזמנה, שקובע איך ההזמנה משתנה מקו הבסיס ל-max_slots. המשתמשים מציינים את השדה הזה כדי להשתמש בתכונה "יכולת חיזוי של הזמנות".
period_autoscale_slot_seconds INTEGER מספר השניות הכולל של יחידות קיבולת שחויבו על ידי התאמה אוטומטית לעומס בדקה ספציפית (כל שורת נתונים תואמת לדקה אחת).
is_creation_region BOOLEAN

מציין אם האזור הנוכחי הוא המיקום שבו נוצרה ההזמנה. המיקום הזה משמש לקביעת התמחור של משבצות הזמן להזמנה בתוכנית הבסיסית. בהזמנה של תוכנית התאוששות מאסון (DR), הערך TRUE מציין את המיקום הראשי המקורי. בהזמנה שהיא לא DR, הערך TRUE מציין את המיקום של ההזמנה.

בהזמנה ללא יתירות כשל, הערך הזה הוא תמיד TRUE. במקרה של הקצאה לגיבוי, הערך תלוי באזור: TRUE לאזור הראשי המקורי ו-FALSE לאזור המשני המקורי.

כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כללי לחיפוש (SELECT *). ציון מפורש של העמודות מונע את קריסת השאילתות אם הסכימה הבסיסית משתנה.

היקף ותחביר

שאילתות בתצוגה הזו חייבות לכלול מזהה אזור. אם לא מציינים מזהה אזורי, המטא-נתונים מאוחזרים מכל האזורים. בטבלה הבאה מוסבר היקף האזור והמשאבים בתצוגה הזו:

הצגת השם היקף המשאבים היקף האזור
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] רמת הפרויקט REGION
מחליפים את הערכים בשדות הבאים:
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud (אופציונלי). אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
  • ‫REGION: כל שם של אזור של מערך נתונים. לדוגמה, `region-us`.

דוגמאות

דוגמה: הצגת התאמה אוטומטית לעומס לשנייה

בדוגמה הבאה מוצגת התאמה אוטומטית של קנה המידה של YOUR_RESERVATION_ID בכל המשימות, לפי שנייה:

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

התוצאה אמורה להיראות כך:

+---------------------+-------------------------+
|     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 |
+---------------------+-------------------------+

דוגמה: הצגת השימוש הכולל ב-slots לשנייה

כדי להריץ את השאילתה בפרויקט אחר, ולא בפרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט בפורמט הבא:

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
לדוגמה, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

בדוגמה הבאה מוצג השימוש במשבצות לשנייה בפרויקטים שהוקצו ל-YOUR_RESERVATION_ID בכל המשימות:

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;

התוצאה אמורה להיראות כך:

+-----------------------+---------------------+--------------------------+------------------------------+
|     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                |
+-----------------------+---------------------+--------------------------+------------------------------+

דוגמה: שימוש ב-slots לפי הזמנה

בדוגמה הבאה מוצג השימוש ב-slots לשנייה בכל הזמנה ביום האחרון:

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;

התוצאה אמורה להיראות כך:

+-----------------------+----------------+---------------------+--------------------------+------------------------------+
|     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             |
+-----------------------+----------------+---------------------+--------------------------+------------------------------+