תצוגת 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: מספר המשבצות להתאמה אוטומטית לעומס שזמינות להזמנה.
  • max_slots: המספר המקסימלי של משבצות שאפשר להוסיף להזמנה באמצעות התאמה אוטומטית לעומס.
edition STRING המהדורה שמשויכת להזמנה הזו. מידע נוסף על מהדורות זמין במאמר מבוא למהדורות של BigQuery.
ignore_idle_slots BOOL ‫False אם שיתוף המשבצות מופעל, אחרת True.
labels RECORD מערך של תוויות שמשויכות להזמנה.
reservation_group_path STRING מבנה הקבוצה ההיררכי שאליו משויכת ההזמנה. לדוגמה, אם מבנה הקבוצה כולל קבוצת הורה וקבוצת צאצא, השדה reservation_group_path מכיל רשימה כמו: [parent group, child group]. השדה הזה נמצא בגרסת טרום-השקה.
period_start TIMESTAMP שעת ההתחלה של התקופה הזו של דקה אחת.
per_second_details STRUCT

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

  • start_time: חותמת הזמן המדויקת של השניות.
  • autoscale_current_slots: מספר המשבצות להתאמה אוטומטית לעומס שזמינות להזמנה בשנייה הזו. המספר הזה לא כולל משבצות זמן בסיסיות.
  • 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 המספר המקסימלי של משבצות שההזמנה הזו יכולה להשתמש בהן, כולל משבצות בסיסיות (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: מזהה הפרויקט ב- 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 |
+---------------------+-------------------------+

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

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

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