ניהול ההתחייבויות לעומסי עבודה
BigQuery Reservation API מאפשר לכם לרכוש משבצות זמן ייעודיות (שנקראות התחייבויות), ליצור מאגרי משבצות זמן (שנקראים הזמנות) ולהקצות פרויקטים, תיקיות וארגונים להזמנות האלה.
התחייבות לקיבולת היא רכישה של קיבולת מחשוב ב-BigQuery למשך זמן מינימלי. כשיוצרים הזמנה עם מהדורה, רכישת התחייבות לקיבולת היא אופציונלית, אבל היא יכולה לחסוך בעלויות.
התחייבויות הן משאב אזורי. אי אפשר להשתמש בהתחייבויות שנרכשו באזור אחד או במספר אזורים באזורים אחרים או במספר אזורים אחרים. אי אפשר להעביר התחייבויות בין אזורים או בין אזורים לבין מספר אזורים. אי אפשר להעביר התחייבויות בין פרויקטים.
הפעלת 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 זמין במאמר תפקידים והרשאות מוגדרים מראש.
יצירת התחייבות לקיבולת
התחייבויות הן משאב אזורי. אי אפשר להשתמש בהתחייבויות שנרכשו באזור אחד או במספר אזורים באזורים אחרים או במספר אזורים אחרים. אי אפשר להעביר התחייבויות בין אזורים או בין אזורים למספר אזורים. אי אפשר להעביר התחייבויות בין פרויקטים.
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בתפריט הניווט, לוחצים על Workload management.
לוחצים על Create Commitment.
בקטע הגדרה:
- בוחרים את המיקום.
- בקטע Capacity model, בוחרים את מודל הקיבולת.
- אם בוחרים באפשרות "התאמה אוטומטית לעומס (מהדורה)":
- ברשימה מהדורה, בוחרים את המהדורה. התחייבויות לקיבולת נתמכות רק במהדורות Enterprise ו-Enterprise Plus.
- בוחרים את Commitment duration, שמציין את תוכנית ההתחייבות.
אם אתם רוכשים מינוי שנתי, אתם צריכים לבחור את תוכנית החידוש שתיכנס לתוקף כשהמחויבות תפוג:
- חידוש שנתי. כשתוקף ההתחייבות השנתית יפוג, היא תתחדש לשנה נוספת כהתחייבות שנתית.
מידע נוסף זמין במאמר בנושא התחייבויות לשימוש במשבצות.
מזינים את מספר המקומות שרוצים לרכוש.
לוחצים על הבא.
בודקים את העלות המשוערת של הרכישה.
בקטע אישור ושליחה:
- מקלידים CONFIRM כדי לאשר את הרכישה.
- לוחצים על Purchase כדי לרכוש את ה-slots.
כדי לראות את ההתחייבות, לוחצים על View slot commitments (הצגת התחייבויות לשימוש במשבצות). אחרי שהקיבולת הוקצתה, הסטטוס של ההתחייבות לקיבולת שביקשתם יהיה ירוק.
בפעם הראשונה שרוכשים קיבולת, נוצרת הזמנה של default.
SQL
כדי ליצור התחייבות לקיבולת, משתמשים בהצהרת ה-DDL CREATE CAPACITY.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: מספר ה-slots לרכישה -
EDITION: המהדורה שמשויכת להתחייבות לקיבולת. אפשר ליצור התחייבות לקיבולת רק במהדורות Enterprise או Enterprise Plus. מידע נוסף על המהדורות זמין במאמר מבוא למהדורות של BigQuery. -
PLAN_TYPE: סוג התוכנית. האפשרויות הןANNUALאוTHREE_YEAR. -
RENEWAL_PLAN_TYPE: סוג תוכנית החידוש. האפשרויות הןNONE, ANNUALאוTHREE_YEAR.
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
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 במסוף Google Cloud .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה Slot commitments. ההתחייבויות לקיבולת מופיעות בטבלה בקטע Commitments.
SQL
כדי לראות את ההתחייבויות לפרויקט אדמין, שולחים שאילתה לתצוגה INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: מזהה הפרויקט של פרויקט הניהול שבבעלותו ההתחייבויות
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
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 זמין במאמר תפקידים והרשאות מוגדרים מראש.
חידוש התחייבות
למינויים עם התחייבות שנתית יש תוכנית חידוש, שאתם מציינים כשאתם יוצרים מינוי עם התחייבות שנתית או עוברים אליו. אתם יכולים לשנות את תוכנית החידוש של ההתחייבות השנתית בכל שלב לפני תאריך הסיום של ההתחייבות.
המסוף
כדי לשנות את תוכנית החידוש של התחייבות שנתית:
במסוף Google Cloud , עוברים לדף BigQuery.
בתפריט הניווט, לוחצים על 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 משבצות.
כשמפצלים התחייבות, להתחייבות החדשה יש את אותה תוכנית ואותו תאריך סיום כמו להתחייבות המקורית.
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה התחייבויות לשימוש במשבצות.
בוחרים את ההתחייבות שרוצים לפצל.
לוחצים על פיצול.
בדף Split commitment (פיצול ההתחייבות), משתמשים בסרגל ההזזה Configure split (הגדרת הפיצול) כדי לבחור כמה משבצות יוקצו לכל פיצול, במרווחים של 50 משבצות.
לוחצים על פיצול כדי לפצל את ההתחייבות. ההתחייבות החדשה מופיעה בכרטיסייה 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). תאריך הסיום של ההתחייבות המשולבת הוא תאריך הסיום המאוחר ביותר של ההתחייבויות המקוריות. אם לאחת מההתחייבויות יש תאריך סיום מוקדם יותר, היא תוארך לתאריך המאוחר יותר ותחויבו בסכום יחסי על המשבצות האלה.
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה Slot commitments.
בוחרים את ההתחייבויות שרוצים למזג.
לוחצים על מיזוג.
בדף מיזוג התחייבויות, בודקים את פרטי המיזוג ולוחצים על מיזוג. ההתחייבות הממוזגת החדשה מופיעה בכרטיסייה 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) כפופות לכמות הקיבולת הזמינה. אחרי שרוכשים התחייבויות ל-slots והמערכת של BigQuery מקצה אותן, בעמודה Status מוצג סימן וי. אם המערכת של BigQuery לא מצליחה להקצות את יחידות ה-slot המבוקשות באופן מיידי, בעמודה Status יישאר הסטטוס "בהמתנה". יכול להיות שיהיה צורך להמתין כמה שעות עד שיחידות הקיבולת יהיו זמינות. אם אתם צריכים גישה למשבצות מוקדם יותר, נסו את הפעולות הבאות:
- מוחקים את ההתחייבות שבהמתנה.
- לרכוש התחייבות חדשה למספר קטן יותר של חריצים. בהתאם לקיבולת, יכול להיות שההתחייבות הקטנה יותר תופעל באופן מיידי.
- לרכוש את המשבצות שנותרו כהתחייבות נפרדת. יכול להיות שהמשבצות האלה יופיעו כ"בהמתנה" בעמודה סטטוס, אבל בדרך כלל הן הופכות לפעילות תוך כמה שעות.
- אופציונלי: כששתי ההתחייבויות הופכות לפעילות, ממזגים אותן להתחייבות אחת, בתנאי ששתיהן באותו אזור ובאותה מהדורה, ושיש להן את אותה תוכנית התחייבות.
אם התחייבות למכסת משבצות נכשלת או נמשכת זמן רב, כדאי להשתמש באופן זמני בתמחור על פי דרישה. בפתרון הזה, אתם יכולים להריץ שאילתות קריטיות בפרויקט אחר שלא הוקצה לאף מקום שמור, להקצות את הפרויקט ל-None או להסיר את הקצאת הפרויקט לגמרי.