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