ניהול ההתחייבויות לעומסי עבודה
באמצעות BigQuery Reservation API אתם יכולים לרכוש משבצות ייעודיות (שנקראות התחייבויות), ליצור מאגרים של משבצות (שנקראים הזמנות) ולהקצות פרויקטים, תיקיות וארגונים להזמנות האלה.
התחייבויות למכסת שימוש ב-BigQuery מאפשרות לכם לרכוש קיבולת מחשוב ייעודית (משבצות) למשך זמן מינימלי, כדי לחסוך בעלויות כשאתם משתמשים במהדורה.
במאמר הזה מוסבר איך רוכשים התחייבויות לקיבולת, איך מציגים אותן ואיך מנהלים את תאריכי התפוגה שלהן. בנוסף, מוסבר איך לחדש, להמיר, לפצל, למזג או לשדרג התחייבויות, לשלוט ביצירת התחייבויות באמצעות כללי מדיניות דחייה ב-IAM ולפתור בעיות שקשורות למשבצות בהמתנה. למידע נוסף, קראו את המאמר הסבר על הזמנות.
הפעלת Reservations API
BigQuery Reservation API נפרד מ-BigQuery API הקיים, וצריך להפעיל אותו בנפרד. מידע נוסף מופיע במאמר הפעלה והשבתה של ממשקי API.
- שם ה-API הוא BigQuery Reservations API.
- נקודת הקצה של BigQuery Reservation API היא
bigqueryreservation.googleapis.com.

התחייבויות לרכישה
כדי לשריין קיבולת לפרק זמן מינימלי, אתם יכולים לרכוש התחייבות לקיבולת. כך מקבלים הנחה וחוסכים בעלויות. מידע נוסף על התמחור ב-BigQuery
ההרשאות הנדרשות
כדי ליצור התחייבות למכסת קיבולת, אתם צריכים את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):
-
bigquery.capacityCommitments.createבפרויקט הניהול שבבעלותו נמצאות ההתחייבויות.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:
BigQuery AdminBigQuery Resource Admin
למידע נוסף על תפקידי IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.
יצירת התחייבות לקיבולת
התחייבויות הן משאב אזורי. אי אפשר להשתמש בהתחייבויות שנרכשו באזור אחד או במספר אזורים, באזורים אחרים או במספר אזורים אחרים. אי אפשר להעביר התחייבויות בין אזורים או בין אזורים למספר אזורים. אי אפשר להעביר התחייבויות בין פרויקטים.
המסוף
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על Create Commitment.
בקטע הגדרה:
- בוחרים את המיקום.
- בקטע Capacity model, בוחרים את מודל הקיבולת.
- אם בוחרים באפשרות "התאמה אוטומטית לעומס (מהדורה)":
- ברשימה Edition, בוחרים את המהדורה. אפשר להשתמש בהתחייבויות לקיבולת רק במהדורות Enterprise ו-Enterprise Plus.
- בוחרים את Commitment duration, שמציינת את תוכנית ההתחייבות.
אם רוכשים מינוי שנתי, בוחרים את תוכנית החידוש שרוצים שתופעל כשהמינוי יסתיים:
- חידוש שנתי. כשההתחייבות השנתית מסתיימת, היא מתחדשת לשנה נוספת כהתחייבות שנתית.
מידע נוסף זמין במאמר התחייבויות ל-slots.
מזינים את מספר המשבצות שרוצים לרכוש.
לוחצים על הבא.
בודקים את העלות המשוערת של הרכישה.
בקטע אישור ושליחה:
- מקלידים CONFIRM כדי לאשר את הרכישה.
- לוחצים על רכישה כדי לרכוש את יחידות ה-Slot.
כדי לראות את ההתחייבות, לוחצים על View slot commitments. אחרי שהקיבולת מוקצית, הסטטוס של ההתחייבות לקיבולת שביקשתם משתנה לירוק.
בפעם הראשונה שרוכשים קיבולת, נוצרת הזמנה של default.
SQL
כדי ליצור התחייבות לקיבולת, משתמשים בהצהרת ה-DDL CREATE CAPACITY.
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE CAPACITY `ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID` OPTIONS ( slot_count = NUMBER_OF_SLOTS, edition = EDITION, plan = 'PLAN_TYPE', renewal_plan = 'RENEWAL_PLAN_TYPE');
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שיהיה הבעלים של ההתחייבות הזו -
LOCATION: המיקום של ההתחייבות
COMMITMENT_ID: מזהה ההתחייבותהשם חייב להיות ייחודי לפרויקט ולמיקום. הוא צריך להתחיל ולהסתיים באות קטנה או במספר, ויכול להכיל רק אותיות קטנות, מספרים ומקפים.
-
NUMBER_OF_SLOTS: מספר המשבצות לרכישה -
EDITION: המהדורה שמשויכת להתחייבות לקיבולת. אפשר ליצור התחייבות לקיבולת רק במהדורות Enterprise או Enterprise Plus. מידע נוסף על המהדורות זמין במאמר מבוא למהדורות של BigQuery. -
PLAN_TYPE: סוג התוכנית. האפשרויות הןANNUALאוTHREE_YEAR. -
RENEWAL_PLAN_TYPE: סוג תוכנית החידוש. האפשרויות הןNONE,ANNUALאוTHREE_YEAR.
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
משתמשים בפקודה bq mk עם הדגל --capacity_commitment כדי לרכוש משבצות.
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--capacity_commitment=true \
--edition=EDITION \
--plan=PLAN_TYPE \
--renewal_plan=RENEWAL_PLAN_TYPE \
--slots=NUMBER_OF_SLOTS
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שיהיה הבעלים של ההתחייבות הזו -
LOCATION: המיקום של ההתחייבות -
EDITION: המהדורה שמשויכת להתחייבות לקיבולת. אפשר ליצור התחייבות למכסת נפח רק במהדורות Enterprise או Enterprise Plus. מידע נוסף על המהדורות של BigQuery -
PLAN_TYPE: סוג התוכנית. האפשרויות הןANNUALאוTHREE_YEAR. -
RENEWAL_PLAN_TYPE: סוג תוכנית החידוש. האפשרויות הןNONE,ANNUALאוTHREE_YEAR. -
NUMBER_OF_SLOTS: מספר ה-slots שרוצים לרכוש.
הצגת ההתחייבויות לקיבולת
בקטעים הבאים מוסבר איך להציג את ההתחייבויות הקיימות לקיבולת.
ההרשאות הנדרשות
כדי לראות את ההתחייבויות, צריך את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):
-
bigquery.capacityCommitments.listבפרויקט הניהול שבבעלותו נמצאות ההתחייבויות.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:
BigQuery AdminBigQuery Resource AdminBigQuery Resource EditorBigQuery Resource ViewerBigQuery User
למידע נוסף על תפקידי IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.
הצגת התחייבויות לקיבולת לפי פרויקט
כדי לראות את ההתחייבויות לקיבולת לפי פרויקט:
המסוף
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה Slot commitments. ההתחייבויות לקיבולת מופיעות בטבלה בקטע Commitments.
SQL
כדי לראות את ההתחייבויות לפרויקט אדמין, שולחים שאילתה לתצוגה INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT.
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בעורך השאילתות, מזינים את ההצהרה הבאה:
SELECT capacity_commitment_id FROM `region-LOCATION`.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT WHERE project_id = 'ADMIN_PROJECT_ID' AND slot_count = 100;
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום של ההתחייבויות -
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו ההתחייבויות
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
משתמשים בפקודה bq ls עם הדגל --capacity_commitment כדי להציג את רשימת ההתחייבויות בפרויקט הניהול.
bq ls \
--capacity_commitment=true \
--location=LOCATION \
--project_id=ADMIN_PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום של ההתחייבויות -
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו ההתחייבויות
עדכון מחויבויות קיבולת
אפשר לבצע את העדכונים הבאים בהתחייבות לקיבולת:
- עדכון תוכנית החידוש של ההתחייבות
- להמיר התחייבות לתוכנית התחייבות עם משך זמן ארוך יותר.
- פיצול התחייבות לשתי התחייבויות.
- מיזוג של שתי התחייבויות להתחייבות אחת.
ההרשאות הנדרשות
כדי לעדכן את ההתחייבויות לקיבולת, אתם צריכים את ההרשאה הבאה בממשק של ניהול הזהויות והרשאות הגישה (IAM):
-
bigquery.capacityCommitments.updateבפרויקט הניהול שבבעלותו נמצאות ההתחייבויות.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:
BigQuery AdminBigQuery Resource Admin
למידע נוסף על תפקידי IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.
חידוש התחייבות
להתחייבויות שנתיות יש תוכנית חידוש, שאותה אתם מציינים כשאתם יוצרים התחייבות שנתית או ממירים להתחייבות שנתית. אתם יכולים לשנות את תוכנית החידוש של ההתחייבות השנתית בכל שלב לפני תאריך הסיום של ההתחייבות.
המסוף
כדי לשנות את תוכנית החידוש של התחייבות שנתית:
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה Slot commitments.
מוצאים את ההתחייבות שרוצים לערוך.
לוחצים על פעולות ובוחרים באפשרות עריכת תוכנית החידוש.
בוחרים את תוכנית החידוש החדשה.
BQ
כדי לשנות את תוכנית החידוש שנבחרה להתחייבות שנתית, משתמשים בפקודה bq update עם הדגל --capacity_commitment והדגל --renewal_plan.
bq update \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--renewal_plan=PLAN_TYPE \
--capacity_commitment=true \
COMMITMENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שיהיה הבעלים של ההתחייבות הזו -
LOCATION: המיקום של ההתחייבות -
PLAN_TYPE: סוג התוכנית, כמוANNUALאוTHREE_YEAR.
COMMITMENT_ID: מזהה ההתחייבותכדי לקבל את המזהה, קראו את המאמר הצגת ההתחייבויות שנרכשו.
המרת התחייבות לתקופה ארוכה יותר
אתם יכולים להמיר את ההתחייבות להתחייבות לתקופה ארוכה יותר בכל שלב. זה נכון גם אם רוצים לעבור מתוכנית מדור קודם למהדורה.
ברגע שמעדכנים את ההתחייבות, מחויבים בתעריף שמשויך לתוכנית החדשה ותאריך הסיום מתאפס.
כדי להמיר התחייבות, משתמשים בפקודה bq update עם הדגל --plan.
bq update \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--plan=PLAN_TYPE \
--renewal_plan=RENEWAL_PLAN \
--capacity_commitment=true \
COMMITMENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט -
LOCATION: המיקום של ההתחייבות -
PLAN_TYPE: סוג התוכנית, למשלANNUALאוTHREE_YEAR.
RENEWAL_PLAN: התוכנית לחידושההגדרה הזו רלוונטית רק אם הערך של
PLAN_TYPEהואANNUAL.
COMMITMENT_ID: מזהה ההתחייבותכדי לקבל את המזהה, קראו את המאמר הצגת ההתחייבויות שנרכשו.
פיצול התחייבות
אתם יכולים לפצל את ההתחייבות לשתי התחייבויות. האפשרות הזו שימושית אם רוצים לחדש חלק מההתחייבות. לדוגמה, אם יש לכם התחייבות שנתית ל-1,000 חריצים, אתם יכולים לפצל 300 חריצים להתחייבות חדשה, ולהשאיר 700 חריצים בהתחייבות המקורית. במקרה כזה, תוכלו לחדש 700 משבצות בתעריף השנתי ולהמיר 300 משבצות להתחייבות לשלוש שנים. אפשר לפצל התחייבות במרווחים של 50 משבצות.
כשמפצלים התחייבות, להתחייבות החדשה יש את אותה תוכנית ואותו תאריך סיום כמו להתחייבות המקורית.
המסוף
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה Slot commitments.
בוחרים את ההתחייבות שרוצים לפצל.
לוחצים על פיצול.
בדף Split commitment, משתמשים בסליידר Configure split כדי לבחור כמה משבצות יוקצו לכל פיצול, במרווחים של 50 משבצות.
לוחצים על Split כדי לפצל את ההתחייבות. ההתחייבות החדשה מופיעה בכרטיסייה Slot commitments.
BQ
כדי לפצל התחייבויות, משתמשים בפקודה bq update.
bq update \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--split \
--slots=SLOTS_TO_SPLIT \
--capacity_commitment=true \
COMMITMENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט -
LOCATION: המיקום של ההתחייבות -
SLOTS_TO_SPLIT: מספר ה-slots שרוצים לפצל מההתחייבות המקורית להתחייבות חדשה
COMMITMENT_ID: מזהה ההתחייבותכדי לקבל את המזהה, קראו את המאמר הצגת ההתחייבויות שנרכשו.
מיזוג של שתי התחייבויות
אתם יכולים למזג כמה התחייבויות להתחייבות אחת. כל ההתחייבויות שאתם ממזגים חייבות להיות מאותו סוג (ANNUAL או THREE_YEAR). תאריך הסיום של ההתחייבות המשולבת הוא תאריך הסיום המאוחר ביותר של ההתחייבויות המקוריות. אם לאחת מההתחייבויות יש תאריך סיום מוקדם יותר, היא תוארך לתאריך המאוחר יותר ותחויבו בסכום יחסי על המשבצות האלה.
המסוף
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה Slot commitments.
בוחרים את ההתחייבויות שרוצים למזג.
לוחצים על מיזוג.
בדף Merge commitments, בודקים את פרטי המיזוג ולוחצים על Merge. ההתחייבות הממוזגת החדשה מופיעה בכרטיסייה Slot commitments.
BQ
כדי למזג שתי התחייבויות להתחייבות אחת, משתמשים בפקודה bq update:
bq update \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--merge=true \
--capacity_commitment=true \
COMMITMENT1,COMMITMENT2
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט -
LOCATION: המיקום של ההתחייבויות COMMITMENT1: ההתחייבות הראשונה שרוצים למזג-
COMMITMENT2: ההתחייבות השנייה שרוצים למזג
שדרוג ההתחייבויות למהדורה חדשה
אי אפשר לשדרג ישירות התחייבות למהדורה חדשה. לדוגמה, אי אפשר לשדרג התחייבות ממהדורת Enterprise למהדורת Enterprise Plus. כדי לשדרג התחייבות, צריך לבצע את הפעולות הבאות:
יצירת התחייבות חדשה. בוחרים את המהדורה המשודרגת המתאימה. חשוב לשים לב שלמינוי החדש יש תאריך סיום שונה מזה של המינוי הקיים.
פנו לתמיכה כדי לבקש לבטל את ההתחייבות הקיימת.
תפוגת ההתחייבות
התוקף של ההתחייבויות פג בסוף התקופה שלהן. אי אפשר למחוק התחייבות כשהיא עדיין פעילה. אם תוכנית החידוש מוגדרת כ-NONE, ההתחייבות נמחקת באופן אוטומטי. אחרת, הוא יחודש עם התחייבות לשנה או לשלוש שנים, בהתאם לתוכנית החידוש. כדי לשנות את תוכנית החידוש ל-NONE, צריך לפעול לפי השלבים שמפורטים במאמר חידוש של התחייבות.
אחרי חידוש ההתחייבות, הערך של שעת התחלה לא משתנה. הוא מתייחס לשעת ההתחלה של ההתחייבות המקורית. הערך של End time הוא הזמן שבו פג התוקף של ההתחייבות שחודשה. לדוגמה, אם יש לכם התחייבות שנתית אחת שנוצרה ב-13 בדצמבר 2022, והיא חודשה ב-13 בדצמבר 2023. אם תצפו בפרטי ההתחייבות ב-14 בדצמבר 2023, הערך של שעת התחלה יהיה 13 בדצמבר 2022 והערך של שעת סיום יהיה 12 בדצמבר 2024.
תמיד תחויבו על משבצות בסיסיות. אם תוקף ההתחייבות לקיבולת פג, יכול להיות שתצטרכו לשנות ידנית את כמות המשבצות הבסיסיות בהזמנות כדי להימנע מחיובים לא רצויים. לדוגמה, נניח שיש לכם התחייבות לשנה אחת עם 100 משבצות והזמנה עם 100 משבצות בסיסיות. תוקף ההתחייבות פג ואין תוכנית חידוש. כשתקופת ההתחייבות תסתיים, תשלמו על 100 משבצות בסיסיות לפי תעריף תשלום לפי שימוש.
שליטה ביצירת התחייבויות לקיבולת
אתם יכולים להשתמש בכללי מדיניות דחייה של IAM כדי לקבל שליטה נוספת על מי שיכול ליצור התחייבויות לקיבולת.
אפשר ליצור כללי מדיניות דחייה לקבוצת משתמשים או לכולם, ולהגדיר אותם עם חריגים ותנאים.
לדוגמה, המדיניות הבאה דוחה את ההרשאה ליצור התחייבויות קיבולת לכל המשתמשים, מלבד לחשבון המשתמש "lucian@example.com":
{
"deniedPrincipals": [
"principalSet://goog/public:all"
],
"deniedPermissions": [
"bigquery.googleapis.com/capacityCommitments.create"
],
"exceptionPrincipals": [
"principal://goog/subject/lucian@example.com"
]
}
אפשר לצרף את המדיניות הזו לארגון כדי לקבוע מי יכול ליצור את ההתחייבויות.
חשוב לזכור שהמדיניות הזו מקבלת קדימות על פני תפקידי IAM, כך שגם משתמש עם התפקיד bigquery.admin לא יוכל ליצור התחייבות, אלא אם המדיניות תימחק או תשתנה.
מידע נוסף זמין במאמר דחיית הגישה למשאבים.
פתרון בעיות שקשורות להתחייבויות לקיבולת
בקטע הזה מתוארים שלבים לפתרון בעיות שיכולים לעזור לכם אם נתקלתם בבעיות שקשורות להתחייבויות לקיבולת ב-BigQuery.
המשבצות שנרכשו נמצאות בהמתנה
יחידות הקיבולת (Slots) כפופות לכמות הקיבולת הזמינה. אחרי שרוכשים התחייבויות למכסות והמערכת של BigQuery מקצה אותן, בעמודה Status מוצג סימן וי. אם המערכת של BigQuery לא מצליחה להקצות את יחידות ה-slot המבוקשות באופן מיידי, בעמודה Status יישאר הסטטוס Pending. יכול להיות שיהיה צורך להמתין כמה שעות עד שיחידות הקיבולת יהיו זמינות. אם אתם צריכים גישה למשבצות מוקדם יותר, נסו את הפעולות הבאות:
- מוחקים את ההתחייבות בהמתנה.
- לרכוש התחייבות חדשה למספר קטן יותר של חריצים. בהתאם לקיבולת, יכול להיות שההתחייבות הקטנה יותר תופעל באופן מיידי.
- לרכוש את המשבצות שנותרו כהתחייבות נפרדת. יכול להיות שהמשבצות האלה יופיעו כ"בהמתנה" בעמודה סטטוס, אבל בדרך כלל הן הופכות לפעילות תוך כמה שעות.
- אופציונלי: כששתי ההתחייבויות הופכות לפעילות, ממזגים אותן להתחייבות אחת, בתנאי ששתי ההתחייבויות הן באותו אזור ובאותה מהדורה, ויש להן אותה תוכנית התחייבות.
אם ההתחייבות למכסת משבצות נכשלת או נמשכת זמן רב, כדאי להשתמש באופן זמני בתמחור על פי דרישה. כדי לפתור את הבעיה, אתם יכולים להריץ שאילתות קריטיות בפרויקט אחר שלא הוקצה לאף מקום שמור, להקצות את הפרויקט ל-None או להסיר את הקצאת הפרויקט לגמרי.