תצוגת RESERVATIONS_TIMELINE

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

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

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

  • אדמין של משאבי BigQuery‏ (roles/bigquery.resourceAdmin)
  • עורך משאבי BigQuery‏ (roles/bigquery.resourceEditor)
  • BigQuery Resource Viewer (צפייה במשאבי 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: מספר יחידות הקיבולת (Slots) להתאמה אוטומטית לעומס שזמינות למקום השמור.
  • max_slots: המספר המקסימלי של יחידות קיבולת שאפשר להוסיף למקום השמור באמצעות התאמה אוטומטית לעומס.
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: מספר יחידות הקיבולת (Slot) להתאמה אוטומטית לעומס שזמינות למקום השמור בשנייה הזו. המספר הזה לא כולל משבצות בסיסיות.
  • autoscale_max_slots: המספר המקסימלי של יחידות קיבולת שאפשר להוסיף למקום השמור באמצעות התאמה אוטומטית לעומס בשנייה הזו. המספר הזה לא כולל משבצות בסיסיות.
  • slots_assigned: מספר המשבצות שהוקצו להזמנה הזו באותה שנייה. הוא שווה לקיבולת הבסיסית של משבצות זמן בשיריון.
  • slots_max_assigned: הקיבולת המקסימלית של משבצות הזמן בהזמנה הזו, כולל שיתוף משבצות הזמן בשנייה הזו. אם הערך של ignore_idle_slots הוא true, הערך של השדה הזה יהיה זהה לערך של slots_assigned. אחרת, השדה slots_max_assigned הוא המספר הכולל של משבצות בכל התחייבויות לקיבולת בפרויקט הניהול.
  • borrowed_slots: מספר המשבצות שהיו בשימוש מתוך שיתוף משבצות פנויות. השדה מאוכלס רק אם הערך של ignore_idle_slots הוא false, והשתמשו במשבצות זמן פנויות במהלך השנייה הזו.
  • lent_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 שם ההזמנה.
slots_assigned INTEGER מספר המשבצות שהוקצו להזמנה הזו.
slots_max_assigned INTEGER קיבולת המקסימלית של המשבצת להזמנה הזו, כולל שיתוף משבצת. אם ignore_idle_slots הוא true, הערך זהה לערך של slots_assigned, אחרת זהו המספר הכולל של משבצות בכל התחייבויות לקיבולת בפרויקט הניהול.
max_slots INTEGER המספר המקסימלי של יחידות קיבולת (Slots) שהמקום השמור הזה יכול להשתמש בהן, כולל יחידות קיבולת בסיסיות (slot_capacity), יחידות קיבולת בלי פעילות (אם ignore_idle_slots הוא FALSE) ויחידות קיבולת של התאמה אוטומטית לעומס. המשתמשים מציינים את השדה הזה כדי להשתמש בתכונה לחיזוי הזמנות.
scaling_mode STRING מצב ההרחבה של ההזמנה, שקובע איך ההזמנה מתרחבת מבסיס ל-max_slots. המשתמשים מציינים את השדה הזה כדי להשתמש בתכונה לחיזוי הזמנות.
period_autoscale_slot_seconds INTEGER המספר הכולל של שניות השימוש במשבצות זמן שחויבו על ידי שינוי הגודל האוטומטי בדקה מסוימת (כל שורת נתונים מתאימה לדקה אחת).
is_creation_region BOOLEAN

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

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

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

היקף ותחביר

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

שם התצוגה היקף המשאבים היקף האזור
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] ברמת הפרויקט REGION
מחליפים את מה שכתוב בשדות הבאים:
  • אופציונלי: PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
  • 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 |
+---------------------+-------------------------+

דוגמה: הצגת נתוני השימוש הכוללים במשבצות זמן בכל שנייה

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

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

דוגמה: שימוש ביחידות קיבולת לפי הזמנה

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

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