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