ניהול התחייבויות לעומסי עבודה

‫BigQuery Reservation API מאפשר לכם לרכוש משבצות זמן ייעודיות (שנקראות התחייבויות), ליצור מאגרי משבצות זמן (שנקראים הזמנות) ולהקצות פרויקטים, תיקיות וארגונים להזמנות האלה.

התחייבות לקיבולת היא רכישה של קיבולת מחשוב ב-BigQuery למשך זמן מינימלי מסוים. כשיוצרים הזמנה עם מהדורה, אפשר לרכוש התחייבות לקיבולת, אבל זה לא חובה. עם זאת, רכישה כזו יכולה להוביל לחיסכון בעלויות.

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

הפעלת Reservations API

‫BigQuery Reservation API שונה מ-BigQuery API הקיים, וצריך להפעיל אותו בנפרד. מידע נוסף מופיע במאמר הפעלה והשבתה של ממשקי API.

  • שם ה-API הוא BigQuery Reservations API
  • נקודת הקצה של BigQuery Reservation API היא bigqueryreservation.googleapis.com.

מפעילים את ה-API.

התחייבויות לרכישה

כדי לשריין קיבולת למשך פרק זמן מינימלי, אתם יכולים לרכוש התחייבות לקיבולת. כך מקבלים הנחה ומוזילים את העלויות. מידע נוסף על העלויות הספציפיות זמין במאמר תמחור ב-BigQuery.

ההרשאות הנדרשות

כדי ליצור התחייבות לקיבולת, אתם צריכים את ההרשאה הבאה בניהול זהויות והרשאות גישה (IAM):

  • ‫bigquery.capacityCommitments.create בפרויקט הניהול שבו נשמרת הבעלות על ההתחייבויות.

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Admin
  • BigQuery Resource Admin

מידע נוסף על תפקידי IAM ב-BigQuery זמין במאמר תפקידים והרשאות מוגדרים מראש.

יצירת התחייבות לקיבולת

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

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על יצירת התחייבות.

  4. בקטע הגדרה:

    1. בוחרים את המיקום.
    2. בקטע Capacity model, בוחרים את מודל הקיבולת.
    3. אם בוחרים באפשרות 'התאמה אוטומטית לעומס (מהדורה)':
      1. ברשימה Edition, בוחרים את המהדורה. התחייבויות לקיבולת נתמכות רק במהדורות Enterprise ו-Enterprise Plus.
    4. בוחרים את משך ההתחייבות, שקובע את תוכנית ההתחייבות.
    5. אם אתם רוכשים מינוי שנתי, אתם צריכים לבחור את תוכנית החידוש שתיכנס לתוקף כשהמחויבות תפוג:

      1. חידוש שנתי. כשתוקף ההתחייבות השנתית יפוג, היא תתחדש לשנה נוספת כהתחייבות שנתית.

      מידע נוסף זמין במאמר בנושא התחייבויות לשימוש במשבצות.

    6. מזינים את מספר המקומות שרוצים לרכוש.

    7. לוחצים על הבא.

  5. בודקים את העלות המשוערת של הרכישה.

  6. בקטע אישור ושליחה:

    1. מקלידים CONFIRM (אישור) כדי לאשר את הרכישה.
    2. לוחצים על רכישה כדי לרכוש את היחידות.
  7. כדי לראות את ההתחייבות, לוחצים על View slot commitments (הצגת התחייבויות לשימוש במשבצות). אחרי שהקיבולת מוקצית, סטטוס ההתחייבות לקיבולת שביקשתם יהיה ירוק.

בפעם הראשונה שאתם רוכשים קיבולת, נוצרת default הזמנה.

SQL

כדי ליצור התחייבות לקיבולת, משתמשים בהצהרת DDL‏ CREATE CAPACITY.

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    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.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

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: מספר יחידות הקיבולת לרכישה.

הצגת התחייבויות לקיבולת

בקטעים הבאים מוסבר איך לראות את התחייבויות הקיבולת הקיימות.

ההרשאות הנדרשות

כדי לראות התחייבויות, אתם צריכים את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

מידע נוסף על תפקידי IAM ב-BigQuery זמין במאמר תפקידים והרשאות מוגדרים מראש.

הצגת התחייבויות לקיבולת לפי פרויקט

כדי לראות את ההתחייבויות לקיבולת לפי פרויקט:

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה התחייבויות לשימוש במשבצות. התחייבויות הקיבולת שלכם מפורטות בטבלה בקטע התחייבויות.

SQL

כדי לראות את ההתחייבויות של פרויקט ניהול, שולחים שאילתה לתצוגה INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT.

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    SELECT
      capacity_commitment_id
    FROM
      `region-LOCATION`.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT
    WHERE
      project_id = 'ADMIN_PROJECT_ID'
      AND slot_count = 100;

    מחליפים את מה שכתוב בשדות הבאים:

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי להציג את ההתחייבויות בפרויקט ניהול, משתמשים בפקודה bq ls עם הדגל --capacity_commitment.

bq ls \
    --capacity_commitment=true \
    --location=LOCATION \
    --project_id=ADMIN_PROJECT_ID

מחליפים את מה שכתוב בשדות הבאים:

עדכון מחויבויות קיבולת

אפשר לבצע את העדכונים הבאים בהתחייבות לקיבולת:

  • עדכון תוכנית החידוש של ההתחייבות
  • המרת התחייבות למינוי עם התחייבות לתקופה ארוכה יותר.
  • פיצול התחייבות לשתי התחייבויות.
  • מיזוג של שתי התחייבויות להתחייבות אחת.

ההרשאות הנדרשות

כדי לעדכן התחייבויות לקיבולת, אתם צריכים את ההרשאה הבאה בממשק של ניהול הזהויות והרשאות הגישה (IAM):

  • ‫bigquery.capacityCommitments.update בפרויקט הניהול שבו נשמרת הבעלות על ההתחייבויות.

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Admin
  • BigQuery Resource Admin

מידע נוסף על תפקידי IAM ב-BigQuery זמין במאמר תפקידים והרשאות מוגדרים מראש.

חידוש התחייבות

למינויים עם התחייבות שנתית יש תוכנית חידוש, שאתם מציינים כשאתם יוצרים מינוי עם התחייבות שנתית או עוברים אליו. אפשר לשנות את תוכנית החידוש של ההתחייבות השנתית בכל שלב לפני תאריך הסיום של ההתחייבות.

המסוף

כדי לשנות את תוכנית החידוש של התחייבות שנתית:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה התחייבויות לשימוש במשבצות.

  4. מחפשים את ההתחייבות שרוצים לערוך.

  5. לוחצים על פעולות ואז בוחרים באפשרות עריכת תוכנית החידוש.

  6. בוחרים את תוכנית החידוש החדשה.

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

מחליפים את מה שכתוב בשדות הבאים:

המרת התחייבות לתקופה ארוכה יותר

אתם יכולים להמיר את ההתחייבות לסוג התחייבות עם משך ארוך יותר בכל שלב. האפשרות הזו פועלת גם אם רוצים להמיר מתוכנית מדור קודם למהדורה.

ברגע שמעדכנים את ההתחייבות, מתחילים לחייב אתכם לפי התעריף שמשויך למינוי החדש, ותאריך הסיום מתאפס.

כדי להמיר התחייבות, משתמשים בפקודה 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 משבצות.

כשמפצלים התחייבות, ההתחייבות החדשה כוללת את אותה תוכנית ואת אותו תאריך סיום של ההתחייבות המקורית.

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה התחייבויות לשימוש במשבצות.

  4. בוחרים את ההתחייבות שרוצים לפצל.

  5. לוחצים על פיצול.

  6. בדף Split commitment, משתמשים בסרגל ההזזה Configure split כדי לבחור כמה משבצות יוקצו לכל פיצול, במרווחים של 50 משבצות.

  7. לוחצים על פיצול כדי לפצל את ההתחייבות. ההתחייבות החדשה מופיעה בכרטיסייה 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: מספר המשבצות לפיצול מההתחייבות המקורית להתחייבות חדשה
  • ‫COMMITMENT_ID: מזהה ההתחייבות

    כדי לקבל את המזהה, אפשר לעיין במאמר בנושא הצגת התחייבויות שנרכשו.

מיזוג של שתי התחייבויות

אפשר למזג כמה התחייבויות להתחייבות אחת. כל ההתחייבויות למיזוג צריכות להיות מאותו סוג (ANNUAL או THREE_YEAR). תאריך הסיום של ההתחייבות המשולבת הוא תאריך הסיום המאוחר ביותר מבין ההתחייבויות המקוריות. אם לאחד מההתחייבויות יש תאריך סיום מוקדם יותר, הוא יוארך לתאריך המאוחר יותר ותחויבו בסכום יחסי על המשבצות האלה.

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה התחייבויות לשימוש במשבצות.

  4. בוחרים את ההתחייבויות שרוצים למזג.

  5. לוחצים על מיזוג.

  6. בדף מיזוג התחייבויות, בודקים את פרטי המיזוג ולוחצים על מיזוג. ההתחייבות החדשה הממוזגת מופיעה בכרטיסייה 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. במקום זאת, פועלים לפי השלבים הבאים כדי לשדרג התחייבות:

  1. יצירת התחייבות חדשה. בוחרים את המהדורה המתאימה לשדרוג. שימו לב שלמחויבות החדשה יש תאריך סיום שונה מזה של המחויבות הקיימת.

  2. פונים לתמיכה כדי לבקש ביטול של ההתחייבות הקיימת.

תפוגת ההתחייבות

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

  1. מוחקים את ההתחייבות שבהמתנה.
  2. רוכשים התחייבות חדשה למספר קטן יותר של משבצות. בהתאם לקיבולת, יכול להיות שההתחייבות הקטנה יותר תופעל באופן מיידי.
  3. רוכשים את המשבצות שנותרו כהתחייבות נפרדת. יכול להיות שהמשבצות האלה יופיעו כ'בהמתנה' בעמודה סטטוס, אבל בדרך כלל הן יהפכו לפעילות תוך כמה שעות.
  4. אופציונלי: כששתי ההתחייבויות הופכות לפעילות, אפשר למזג אותן להתחייבות אחת, בתנאי ששתי ההתחייבויות הן באותו אזור ובאותה מהדורה, ושיש להן את אותה תוכנית התחייבות.

אם התחייבות לשימוש במשבצת נכשלת או נמשכת זמן רב מדי, כדאי להשתמש באופן זמני בתמחור על פי דרישה. בעזרת הפתרון הזה, אתם יכולים להריץ שאילתות קריטיות בפרויקט אחר שלא הוקצה למקומות שמורים, להקצות את הפרויקט ל-None או להסיר את הקצאת הפרויקט לגמרי.