ניהול הזמנות של עומסי עבודה

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

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

יצירת הזמנות

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

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

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

  • BigQuery Resource Editor
  • BigQuery Resource Admin

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

יצירת בקשה לשמירת מקום עם משבצות ייעודיות

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

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

  4. בשדה Reservation name, מזינים שם להזמנה.

  5. ברשימה מיקום, בוחרים את המיקום. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.

  6. בוחרים מהדורה מהרשימה Edition. תכונות של מהדורת BigQuery, כמו שינוי קנה מידה אוטומטי, זמינות רק במהדורה. מידע נוסף זמין במאמר מבוא למהדורות BigQuery.

  7. ברשימה Max reservation size selector, בוחרים את הגודל המקסימלי של ההזמנה.

  8. אופציונלי: בשדה Baseline slots, מזינים את מספר המשבצות הבסיסיות להזמנה.

    מספר המשבצות הזמינות להתאמה אוטומטית לעומס נקבע על ידי הפחתת הערך של Baseline slots מהערך של Max reservation size. לדוגמה, אם יוצרים הזמנה עם 100 משבצות זמן בסיסיות וגודל הזמנה מקסימלי של 400, ההזמנה כוללת 300 משבצות זמן עם שינוי גודל אוטומטי. מידע נוסף על משבצות בסיסיות זמין במאמר בנושא שימוש בהזמנות עם משבצות בסיסיות ומשבצות של שינוי גודל אוטומטי.

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

  10. כדי להרחיב את הקטע הגדרות מתקדמות, לוחצים על החץ להרחבה .

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

  12. פירוט המשבצות מוצג בטבלה Cost estimate. סיכום של ההזמנה מוצג בטבלה Capacity summary.

  13. לוחצים על Save.

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

SQL

כדי ליצור הזמנה, משתמשים בהצהרת CREATE RESERVATION DDL.

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

    כניסה ל-BigQuery

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

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      edition = EDITION,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);

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

    • ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
    • LOCATION: המיקום של ההזמנה. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.
    • RESERVATION_NAME: השם של ההזמנה

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

    • NUMBER_OF_BASELINE_SLOTS: מספר בסיסי של משבצות להקצאה להזמנה. אי אפשר להגדיר את האפשרות slot_capacity ואת האפשרות standard באותה הזמנה.
    • EDITION: מהדורת ההזמנה. הקצאת הזמנה למהדורה מגיעה עם שינויים בתכונות ובמחירים. מידע נוסף זמין במאמר מבוא למהדורות BigQuery.
    • NUMBER_OF_AUTOSCALING_SLOTS: מספר המשבצות להתאמה אוטומטית לעומס שהוקצו להזמנה. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות.

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

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

BQ

כדי ליצור הזמנה, משתמשים בפקודה bq mk עם הדגל --reservation:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --ignore_idle_slots=false \
    --edition=EDITION \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    --max_slots=MAXIMUM_NUMBER_OF_SLOTS
    --scaling_mode=SCALING_MODE
    RESERVATION_NAME

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של ההזמנה. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.
  • NUMBER_OF_BASELINE_SLOTS: מספר משבצות הבסיס להקצאה להזמנה

  • RESERVATION_NAME: השם של ההזמנה. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.

  • EDITION: מהדורת ההזמנה. הקצאת הזמנה למהדורה מגיעה עם שינויים בתכונות ובמחירים. מידע נוסף זמין במאמר מבוא למהדורות BigQuery.

  • NUMBER_OF_AUTOSCALING_SLOTS: מספר המשבצות להתאמה אוטומטית לעומס שהוקצו להזמנה. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות. אי אפשר להגדיר את זה באמצעות הדגלים --max_slots או --scaling_mode.

  • MAXIMUM_NUMBER_OF_SLOTS: המספר המקסימלי של משבצות שההזמנה יכולה לצרוך. צריך להגדיר את הערך הזה באמצעות הדגל --scaling_mode (תצוגה מקדימה).

  • SCALING_MODE: מצב שינוי הגודל של ההזמנה. האפשרויות הן ALL_SLOTS, IDLE_SLOTS_ONLY או AUTOSCALE_ONLY. צריך להגדיר את הערך הזה באמצעות הדגל --scaling_mode (תצוגה מקדימה).

מידע על הדגל --ignore_idle_slots זמין במאמר בנושא משבצות זמן פנויות. ערך ברירת המחדל הוא false.

Terraform

משתמשים במשאב google_bigquery_reservation.

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

בדוגמה הבאה נוצרת בקשה לשמירת מקום בשם my-reservation:

resource "google_bigquery_reservation" "default" {
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = false # Use idle slots from other reservations
  concurrency       = 0     # Automatically adjust query concurrency based on available resources
  autoscale {
    max_slots = 200 # Allow the reservation to scale up to 300 slots (slot_capacity + max_slots) if needed
  }
}

כדי להחיל את ההגדרות של Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

Python

לפני שמשתמשים בדוגמת הקוד הזו, צריך להתקין את החבילה google-cloud-bigquery-reservation. יצירת ReservationServiceClient. תאר את ההזמנה שברצונך ליצור באמצעות הזמנה. יוצרים את ההזמנה באמצעות השיטה create_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the number of slots in the
# reservation.
slot_capacity = 100

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

parent = reservation_client.common_location_path(project_id, location)

reservation = reservation_types.Reservation(slot_capacity=slot_capacity)
reservation = reservation_client.create_reservation(
    parent=parent,
    reservation=reservation,
    reservation_id=reservation_id,
)

print(f"Created reservation: {reservation.name}")

יצירת הזמנה צפויה

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

הפעלת הוגנות מבוססת-הזמנה

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

כדי לעדכן את ההוגנות מבוססת-ההזמנות בפרויקט, צריך את ההרשאה bigquery.config.update בפרויקט שבו מתבצעת הבעלות על ההזמנות. ההרשאה הזו כלולה בתפקיד המוגדר מראש BigQuery Admin.

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

ALTER PROJECT `PROJECT_NAME` SET OPTIONS (
    `region-LOCATION.enable_reservation_based_fairness`= true);

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

יצירת הזמנה צפויה

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הניווט, עוברים לקטע ניהול קיבולת ולוחצים על יצירת הזמנה.

  3. בשדה Reservation name, מזינים שם להזמנה.

  4. ברשימה מיקום, בוחרים את המיקום. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.

  5. בוחרים מהדורה מהרשימה Edition. מידע נוסף זמין במאמר הסבר על מהדורות BigQuery.

  6. ברשימה Max reservation size selector, בוחרים את הגודל המקסימלי של ההזמנה.

  7. אופציונלי: בשדה Baseline slots, מזינים את מספר המשבצות הבסיסיות להזמנה.

    מספר המשבצות הזמינות להתאמה אוטומטית לעומס נקבע על ידי הפחתת הערך של Baseline slots מהערך של Max reservation size. לדוגמה, אם יוצרים הזמנה עם 100 משבצות זמן בסיסיות וגודל הזמנה מקסימלי של 400, ההזמנה כוללת 300 משבצות זמן עם שינוי גודל אוטומטי. מידע נוסף על משבצות בסיסיות זמין במאמר בנושא שימוש בהזמנות עם משבצות בסיסיות ומשבצות של שינוי גודל אוטומטי.

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

  9. כדי להרחיב את הקטע הגדרות מתקדמות, לוחצים על החץ להרחבה .

    1. ברשימה How to use idle slots? (איך להשתמש במשבצות זמן פנויות?), בוחרים את אפשרות ההגדרה.
  10. פירוט המשבצות מוצג בטבלה Cost estimate. סיכום של ההזמנה מוצג בטבלה Capacity summary.

  11. לוחצים על Save.

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

BQ

כדי ליצור הזמנה צפויה, משתמשים בפקודה bq mk עם הדגל --reservation ומגדירים את הערכים של max_slots ו-scaling_mode:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --ignore_idle_slots=false \
    --edition=EDITION \
    --max_slots=MAXIMUM_NUMBER_OF_SLOTS \
    --scaling_mode=SCALING_MODE
    RESERVATION_NAME

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של ההזמנה. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.
  • NUMBER_OF_BASELINE_SLOTS: מספר משבצות הבסיס להקצאה להזמנה

  • RESERVATION_NAME: השם של ההזמנה

  • EDITION: מהדורת ההזמנה. הקצאת הזמנה למהדורה מגיעה עם שינויים בתכונות ובמחירים. מידע נוסף זמין במאמר מבוא למהדורות BigQuery.

  • MAXIMUM_NUMBER_OF_SLOTS: המספר המקסימלי של משבצות שההזמנה יכולה לצרוך. חובה להגדיר את הערך הזה באמצעות הדגל --scaling_mode.

  • SCALING_MODE: SCALING_MODE: מצב ההתאמה של ההזמנה. האפשרויות הן ALL_SLOTS, IDLE_SLOTS_ONLY או AUTOSCALE_ONLY. חובה להגדיר את הערך הזה באמצעות הדגל max_slots. הערך הזה צריך להיות זהה לערך של הדגל ignore_idle_slots. פרטים נוספים מופיעים במאמר בנושא הזמנה צפויה.

מידע על הדגל --ignore_idle_slots זמין במאמר בנושא משבצות זמן פנויות. ערך ברירת המחדל הוא false.

SQL

כדי ליצור הזמנה צפויה, משתמשים בהצהרת DDL‏ CREATE RESERVATION.

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

    כניסה ל-BigQuery

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

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      edition = EDITION,
      ignore_idle_slots=IGNORE_IDLE_SLOTS
      max_slots = MAX_NUMBER_OF_SLOTS,
      scaling_mode = SCALING_MODE);

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

    • ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה.
    • LOCATION: המיקום של ההזמנה. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.
    • RESERVATION_NAME: השם של ההזמנה.השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.

    • NUMBER_OF_BASELINE_SLOTS: מספר בסיסי של משבצות להקצאה להזמנה. אי אפשר להגדיר את האפשרות slot_capacity ואת האפשרות standard באותה הזמנה.
    • EDITION: מהדורת ההזמנה. הקצאת הזמנה למהדורה מגיעה עם שינויים בתכונות ובמחירים. מידע נוסף זמין במאמר מבוא למהדורות BigQuery.
    • IGNORE_IDLE_SLOTS: האם ההזמנה משתמשת במשבצות פנויות או לא. ערך ברירת המחדל הוא false.
    • MAX_NUMBER_OF_SLOTS: המספר המקסימלי של משבצות שההזמנה יכולה לצרוך. חובה להגדיר את הערך הזה באמצעות האפשרות scaling_mode.
    • SCALING_MODE: מצב שינוי הגודל של ההזמנה. האפשרויות הן ALL_SLOTS, IDLE_SLOTS_ONLY או AUTOSCALE_ONLY. חובה להגדיר את הערך הזה באמצעות האפשרות max_slots. הערך הזה צריך להיות זהה לערך של האפשרות ignore_idle_slots. פרטים נוספים מופיעים במאמר בנושא הזמנה צפויה.

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

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

מידע נוסף על הזמנות צפויות

עדכון הזמנות

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

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

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

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

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

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

שינוי הגודל של הזמנה

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

  3. לוחצים על הכרטיסייה Slot reservations.

  4. מאתרים את ההזמנה שרוצים לעדכן.

  5. מרחיבים את האפשרות Actions (פעולות).

  6. לוחצים על Edit.

  7. בתיבת הדו-שיח בחירת גודל ההזמנה המקסימלי, מזינים את גודל ההזמנה המקסימלי.

  8. בשדה Baseline slots (משבצות בסיסיות), מזינים את מספר המשבצות הבסיסיות.

  9. כדי להרחיב את הקטע הגדרות מתקדמות, לוחצים על החץ להרחבה .

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

  11. לוחצים על Save.

SQL

כדי לשנות את הגודל של הזמנה, משתמשים בהצהרה של שפת הגדרת נתונים (DDL) ALTER RESERVATION SET OPTIONS.

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

    כניסה ל-BigQuery

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

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);

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

    • ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
    • LOCATION: המיקום של השמירה, לדוגמה europe-west9.
    • RESERVATION_NAME: השם של השמירה. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.

    • NUMBER_OF_BASELINE_SLOTS: מספר המשבצות של תוכנית הבסיס להקצאה להזמנה.
    • NUMBER_OF_AUTOSCALING_SLOTS: מספר המשבצות להתאמה אוטומטית לעומס שהוקצו להזמנה. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות.

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

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

BQ

כדי לעדכן את גודל ההזמנה, משתמשים בפקודה bq update עם הדגל --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    --reservation RESERVATION_NAME

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של ההזמנה
  • NUMBER_OF_BASELINE_SLOTS: מספר משבצות הבסיס להקצאה להזמנה
  • RESERVATION_NAME: השם של ההזמנה. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.
  • NUMBER_OF_AUTOSCALING_SLOTS: מספר המשבצות להתאמה אוטומטית לעומס שהוקצו להזמנה. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות.

Python

לפני שמשתמשים בדוגמת הקוד הזו, צריך להתקין את החבילה google-cloud-bigquery-reservation. יצירת ReservationServiceClient. מתארים את המאפיינים המעודכנים באמצעות Reservation וFieldMask.paths. מעדכנים את ההזמנה באמצעות השיטה update_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the new number of slots in the
# reservation.
slot_capacity = 50

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)
from google.protobuf import field_mask_pb2

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation = reservation_types.Reservation(
    name=reservation_name,
    slot_capacity=slot_capacity,
)
field_mask = field_mask_pb2.FieldMask(paths=["slot_capacity"])
reservation = reservation_client.update_reservation(
    reservation=reservation, update_mask=field_mask
)

print(f"Updated reservation: {reservation.name}")
print(f"\tslot_capacity: {reservation.slot_capacity}")

הגדרת האפשרות להשתמש במשבצות פנויות בשאילתות

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

כדי לעדכן הזמנה, משתמשים בפקודה bq update עם הדגל --reservation . בדוגמה הבאה, הערך של --ignore_idle_slots הוא true, כלומר המקום השמור ישתמש רק במשבצות שהוקצו לו.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --ignore_idle_slots=true \
    --reservation RESERVATION_NAME

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של ההזמנה
  • RESERVATION_NAME: השם של ההזמנה. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.

הצגת ההגדרה של משבצות בלי פעילות

כדי להציג את ההגדרה idle slots של הזמנה:

SQL

שליחת שאילתה לעמודה ignore_idle_slots בתצוגה INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT.

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

    כניסה ל-BigQuery

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

    SELECT
      reservation_name,
      ignore_idle_slots
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;

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

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

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

BQ

משתמשים בפקודה bq ls עם הדגל --reservation:

bq ls --reservation \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION

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

השדה ignoreIdleSlots מכיל את הגדרת התצורה.

מחיקת הזמנות

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

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

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

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

מחיקת הזמנה

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

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

  4. מוצאים את ההזמנה שרוצים למחוק.

  5. מרחיבים את האפשרות Actions (פעולות).

  6. לוחצים על Delete.

  7. בתיבת הדו-שיח מחיקת ההזמנה, לוחצים על מחיקה.

SQL

כדי למחוק הזמנה, משתמשים בהצהרת DROP RESERVATION DDL.

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

    כניסה ל-BigQuery

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

    DROP RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;

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

    • ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
    • LOCATION: המיקום של ההזמנה
    • RESERVATION_NAME: המזהה של השיריון

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

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

BQ

כדי למחוק הזמנה, משתמשים בפקודה bq rm עם הדגל --reservation:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation RESERVATION_NAME

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • LOCATION: המיקום של ההזמנה
  • RESERVATION_NAME: השם של ההזמנה. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.

Python

לפני שמשתמשים בדוגמת הקוד הזו, צריך להתקין את החבילה google-cloud-bigquery-reservation. יצירת ReservationServiceClient. מוחקים את ההזמנה באמצעות השיטה delete_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)
reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation_client.delete_reservation(name=reservation_name)

print(f"Deleted reservation: {reservation_name}")

שליטה בגישה להזמנות

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

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

כדי לקבל את ההרשאה שנדרשת לציון הזמנה מסוימת לעבודה, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Resource Editor ‏ (roles/bigquery.resourceEditor) במשאב ההזמנה. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

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

שליטה בגישה להזמנה

כדי לנהל את הגישה למשאב ספציפי של הזמנה, משתמשים בפקודה bq set-iam-policy.

כדי לנהל גישה למספר משאבי הזמנה, משתמשים ב Google Cloud מסוף כדי להעניק את התפקיד BigQuery Resource Editor (עורך משאבי BigQuery) בפרויקט, בתיקייה או בארגון. כשמקצים את התפקיד, משתמשים בתנאי IAM כדי לאפשר גישה למשאבי ההזמנה כשהתנאים שצוינו מתקיימים.

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

המסוף

במסוף Google Cloud , אפשר לאפשר גישה למספר משאבי הזמנה באמצעות תנאי.

  1. נכנסים לדף IAM במסוף Google Cloud .

    כניסה ל-IAM

  2. בוחרים פרויקט, תיקייה או ארגון.

  3. כדי להקצות את התפקיד bigquery.resourceEditor לחשבון משתמש שיש לו תפקיד במשאבי ההזמנה:

    1. בכרטיסייה View by principals, עוברים לחשבון המשתמש הרלוונטי או משתמשים באפשרות Filter כדי למצוא את חשבון המשתמש.

    2. לוחצים על עריכת הגורם המרכזי.

    3. בדף הקצאת תפקידים, לוחצים על הוספת תפקידים.

    4. בשדה חיפוש תפקידים, מזינים bigquery.resourceEditor.

    5. מסמנים את האפשרות BigQuery Resource Editor בתוצאות החיפוש ולוחצים על Apply (החלה).

    6. לוחצים על Save.

  4. לחלופין, כדי להקצות את התפקיד bigquery.resourceEditor לחשבון משתמש שאין לו תפקיד במשאבי ההזמנה:

    1. לוחצים על Grant Access.

    2. בדף Add principals, בשדה New principals, מזינים את המזהה של החשבון הראשי – לדוגמה, my-user@example.com.

    3. לוחצים על הוספת תפקידים.

    4. בשדה חיפוש תפקידים, מזינים bigquery.resourceEditor.

    5. מסמנים את האפשרות BigQuery Resource Editor בתוצאות החיפוש ולוחצים על Apply (החלה).

    6. בתיבה BigQuery Resource Editor, לוחצים על Add condition (הוספת תנאי).

    7. בדף הוספת תנאי:

      1. מזינים ערכים בשדות Title ו-Description.

      2. מוסיפים את התנאי בכלי להגדרת תנאים. לדוגמה, כדי להוסיף תנאי שמעניק את התפקיד לכל שמות ההזמנות שמסתיימים ב-/reservation1, בשדה Condition type (סוג התנאי) בוחרים באפשרות Name (שם), בשדה Operator (אופרטור) בוחרים באפשרות Ends with (מסתיים ב-), ובשדה Value (ערך) מזינים /reservation1.

      3. לוחצים על Save.

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

BQ

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

כדי להעניק גישה להזמנה, משתמשים בפקודה bq set-iam-policy:

bq set-iam-policy --reservation RESOURCE FILE_NAME

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

  • RESOURCE: מזהה השריון. לדוגמה, project1:US.reservation1.
  • FILE_NAME: הקובץ שמכיל את המדיניות בפורמט JSON. הפורמט צריך להתאים למבנה של מדיניות IAM עבור מדיניות הרשאה. לדוגמה:

    {
      "bindings": [
        {
          "members": [
            "user:my-user@example.com"
          ],
          "role": "roles/bigquery.resourceEditor"
        }
      ],
      "etag": "BwUjMhCsNvY=",
      "version": 1
    }

מידע נוסף על IAM זמין במאמר ניהול הגישה למשאבים אחרים.

תעדוף משבצות זמן בלי פעילות באמצעות קבוצות של הזמנות

כדי לבקש תמיכה או לשלוח משוב על התכונה הזו, אפשר לפנות לכתובת bigquery-wlm-feedback@google.com.

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

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

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

כדי לקבל את ההרשאות שנדרשות לעדכון של הזמנה מסוימת כדי להגדיר את קבוצת ההזמנה, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Reservation Editor (roles/bigquery.reservationEditor) במשאב ההזמנה. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

יצירת קבוצת הזמנות

כדי ליצור קבוצת הזמנות:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

  3. מסמנים את התיבה לצד ההזמנה שרוצים להוסיף לקבוצה.

  4. לוחצים על הלחצן יצירת קבוצה של בקשות לשמירת מקום בכותרת הטבלה.

  5. בחלונית Create reservation group, מזינים את שם הקבוצה בשדה Group name.

  6. אופציונלי: בשדה הזמנות, בוחרים הזמנות נוספות שרוצים להוסיף לקבוצה. לוחצים על אישור.

  7. לוחצים על יצירה.

קבוצת ההזמנות החדשה מופיעה בכרטיסייה הזמנות משבצות.

BQ

כדי ליצור הזמנה, משתמשים בפקודה bq mk עם הדגל --reservation:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --alpha=reservation_groups \
    --reservation_group \
    RESERVATION_GROUP_NAME

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של ההזמנה.
  • RESERVATION_GROUP_NAME: השם של קבוצת ההזמנות. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.

הוספת הזמנה לקבוצת הזמנות

כדי להוסיף הזמנה לקבוצת הזמנות, מעדכנים את המאפיין reservation_group של ההזמנה:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

  3. מרחיבים את האפשרות Actions (פעולות).

  4. לוחצים על Edit.

  5. בחלונית עריכת קבוצת הזמנות, בוחרים את ההזמנות שרוצים להוסיף בשדה הזמנות. לוחצים על אישור.

  6. לוחצים על Save.

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

BQ

כדי לעדכן את ההזמנה ולהגדיר את קבוצת ההזמנות, משתמשים בפקודה bq update עם הדגל --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --alpha=reservation_groups \
    --reservation_group_name=RESERVATION_GROUP_NAME \
    --reservation RESERVATION_NAME

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של ההזמנה
  • RESERVATION_GROUP_NAME: השם של קבוצת ההזמנות. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.
  • RESERVATION_NAME: השם של ההזמנה. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.

רשימת ההזמנות שמשויכות לקבוצת הזמנות

כדי להציג את פרטי קבוצת ההזמנות של ההזמנות שלכם:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

  3. בכרטיסייה Slot reservations אפשר לראות בטבלה גם קבוצות של הזמנות וגם הזמנות (ללא קבוצת אב).

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

BQ

כדי להציג את רשימת ההזמנות ולכלול בה את פרטי קבוצת ההזמנות, משתמשים בפקודה bq ls עם הדגלים --reservation ו---alpha=reservation_groups:

bq ls \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --alpha=reservation_groups \
    --reservation

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של ההזמנה

הסרת הזמנה מקבוצת הזמנות

כדי להסיר הזמנה מקבוצת הזמנות, מעדכנים את מאפיין reservation_group של ההזמנה למחרוזת ריקה:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

  3. מרחיבים את האפשרות Actions (פעולות).

  4. לוחצים על Edit.

  5. בחלונית Edit reservation group (עריכת קבוצת הזמנות), בוחרים את ההזמנות שרוצים להסיר בשדה Reservations (הזמנות). לוחצים על אישור.

  6. לוחצים על Save.

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

אם ההזמנה שרוצים להסיר היא האחרונה בקבוצה:

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

  3. מרחיבים את האפשרות Actions (פעולות).

  4. לוחצים על Edit.

  5. לוחצים על ביטול הקיבוץ בחלונית עריכת קבוצת הזמנות.

קבוצת ההזמנות נמחקת.

BQ

כדי להסיר את ההזמנה מקבוצת ההזמנות, משתמשים בפקודה bq update עם הדגל --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --alpha=reservation_groups \
    --reservation_group_name="" \
    --reservation RESERVATION_NAME

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

  • ADMIN_PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של ההזמנה
  • NUMBER_OF_BASELINE_SLOTS: מספר משבצות הבסיס להקצאה להזמנה
  • RESERVATION_NAME: השם של ההזמנה. השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות או מקפים, הוא חייב להתחיל באות ולא יכול להסתיים במקף, והאורך המקסימלי שלו הוא 64 תווים.

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

פתרון בעיות

יכול להיות שיופיעו הודעות השגיאה הבאות כשיוצרים או מעדכנים הזמנה:

שגיאה: Max reservation size can only be configured in multiples of 50, except when covered by excess commitments.
שגיאה: Baseline slots can only be configured in multiples of 50, except when covered by excess commitments.
ההקצאה של משבצות תמיד תגדל אוטומטית בכפולות של 50. הגדלת הקיבולת מבוססת על השימוש בפועל, והיא מעוגלת כלפי מעלה למכפלה הקרובה של 50 משבצות. אם אין התחייבות או שההתחייבות לא מכסה את העלייה, אפשר להגדיל את מספר המשבצות של בסיס הנתונים ושל שינוי הגודל האוטומטי רק במכפלות של 50.

אם reservation size - baseline slots לא מתחלק ב-50, אי אפשר להגדיל את ההזמנה עד לגודל המקסימלי של ההזמנות, ולכן השגיאה הזו מופיעה.

פתרון:

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