ניהול המלצות לתצוגות מהותיות

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

מבוא

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

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

איך פועל מנגנון ההמלצות

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

דוגמה לשאילתה:

WITH revenue   AS
(SELECT l_suppkey as supplier_no,
        sum(l_extendedprice * (1 - l_discount)) as total_revenue
  FROM lineitem
  WHERE
    l_shipdate >= date '1996-01-01'
    AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
  GROUP BY l_suppkey)
SELECT s_suppkey,
      s_name,
      s_address,
      s_phone,
      total_revenue
FROM
supplier,
revenue
WHERE s_suppkey = supplier_no
AND total_revenue =
  (SELECT max(total_revenue)
    FROM revenue)
ORDER BY s_suppkey

בדוגמה הזו של שאילתה מוצג מידע על הספק המוביל. השאילתה מכילה ביטוי טבלה נפוץ (CTE) בשם revenue שמייצג את ההכנסה הכוללת לכל ספק (l_suppkey). מתבצע צירוף של revenue לטבלת הספקים בתנאי שערך total_revenue של הספק תואם לערך max(total_revenue) בכל הספקים. כתוצאה מכך, השאילתה מחשבת מידע (l_suppkey, s_name, s_address, s_phone, total_revenue) על הספק עם סך ההכנסות המקסימלי.

השאילתה כולה מורכבת מדי מכדי להציב אותה בתצוגה חומרית מצטברת. עם זאת, supplier CTE הוא צבירה על טבלה יחידה – תבנית שאילתה שנתמכת בתצוגות חומריות מצטברות. ה-CTE‏ supplier הוא גם החלק הכי יקר מבחינת חישובים בשאילתה. לכן, אם שאילתת הדוגמה הופעלה שוב ושוב על טבלאות מקור שמשתנות כל הזמן, יכול להיות שהכלי להמלצות על תצוגות חומריות יציע להכניס את supplierה-CTE לתצוגה חומרית. ההמלצה לתצוגה חומרית עבור שאילתת הדוגמה הקודמת עשויה להיראות כך:

CREATE MATERIALIZED VIEW mv AS
SELECT l_suppkey as supplier_no,
         sum(l_extendedprice * (1 - l_discount)) as total_revenue
  FROM lineitem
  WHERE
    l_shipdate >= date '1996-01-01'
    AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
  GROUP BY l_suppkey

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

מגבלות

לפני שמתחילים

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

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

כדי לקבל את ההרשאות שנדרשות לגישה להמלצות לתצוגות מהותיות, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ BigQuery Materialized View Recommender Viewer (roles/recommender.bigqueryMaterializedViewViewer). להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

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

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

  • recommender.bigqueryMaterializedViewRecommendations.get
  • recommender.bigqueryMaterializedViewRecommendations.list

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

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

הצגת המלצות לתצוגות חומריות

בקטע הזה מוסבר איך לראות המלצות ותובנות לגבי תצוגות חומריות באמצעות מסוף Google Cloud , ‏Google Cloud CLI או Recommender API.

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

המסוף

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

    כניסה ל-BigQuery

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

  3. תיפתח החלונית BigQuery Recommendations. בקטע Optimize BigQuery workload cost (אופטימיזציה של עלות עומס העבודה ב-BigQuery), לוחצים על View details (הצגת פרטים).

    צפייה בפרטים כדי לראות את כל ההמלצות ל-BigQuery

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

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

gcloud

כדי לראות המלצות לתצוגות חומריות בפרויקט מסוים, משתמשים בפקודה gcloud recommender recommendations list:

gcloud recommender recommendations list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --recommender=google.bigquery.materializedview.Recommender \
    --format=FORMAT_TYPE \

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

  • PROJECT_NAME: שם הפרויקט שמריץ את עבודות השאילתות
  • REGION_NAME: האזור שבו מופעלות משימות של שאילתות
  • FORMAT_TYPE: פורמט פלט נתמך של ה-CLI של gcloud – לדוגמה, JSON
בטבלה הבאה מפורטים השדות החשובים מהתגובה של `recommendations`:

מאפיין (property) רלוונטי לסוג משנה תיאור
recommenderSubtype CREATE_MATERIALIZED_VIEW סוג ההמלצה.
content.overview.sql CREATE_MATERIALIZED_VIEW הצעה להצהרת DDL שיוצרת תצוגה מהותית.
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW אומדן של אלפיות השנייה של משבצות הזמן שייחסכו מדי חודש לפי התצוגה המוצעת.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW הערכה של מספר הבייטים שנסרקו וייחסכו מדי חודש באמצעות התצוגה המוצעת.
content.overview.baseTables CREATE_MATERIALIZED_VIEW שמור לשימוש בעתיד.

כדי להציג תובנות שהובילו להמלצות לגבי תצוגות מהותיות באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud recommender insights list:

gcloud recommender insights list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --insight-type=google.bigquery.materializedview.Insight \
    --format=FORMAT_TYPE \

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

  • PROJECT_NAME: שם הפרויקט שמריץ את עבודות השאילתות
  • REGION_NAME: האזור שבו מופעלות משימות של שאילתות
  • FORMAT_TYPE: פורמט פלט נתמך של ה-CLI של gcloud – לדוגמה, JSON
בטבלה הבאה מפורטים השדות החשובים בתגובה של Insights API:

מאפיין (property) רלוונטי לסוג משנה תיאור
content.queryCount CREATE_MATERIALIZED_VIEW מספר השאילתות בתקופת התצפית עם דפוס חוזר שאפשר לבצע אופטימיזציה שלהן באמצעות תצוגה חומרית.

API ל-REST

כדי לראות המלצות לתצוגות מהותיות בפרויקט ספציפי, צריך להשתמש ב-API בארכיטקטורת REST. לכל פקודה צריך לספק אסימון אימות, שאפשר לקבל באמצעות ה-CLI של gcloud. מידע נוסף על קבלת אסימון אימות זמין במאמר שיטות לקבלת אסימון מזהה.

אפשר להשתמש בבקשת curl list כדי לראות את כל ההמלצות לפרויקט ספציפי:

$ curl
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/recommenders/google.bigquery.materializedview.Recommender/recommendations

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

  • PROJECT_NAME: שם הפרויקט שמכיל את הטבלה ב-BigQuery
  • LOCATION: המיקום שבו נמצא הפרויקט.
בטבלה הבאה מפורטים השדות החשובים מהתגובה של `recommendations`:

מאפיין (property) רלוונטי לסוג משנה תיאור
recommenderSubtype CREATE_MATERIALIZED_VIEW סוג ההמלצה.
content.overview.sql CREATE_MATERIALIZED_VIEW הצעה להצהרת DDL שיוצרת תצוגה מהותית.
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW אומדן של אלפיות השנייה של משבצות הזמן שייחסכו מדי חודש לפי התצוגה המוצעת.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW הערכה של מספר הבייטים שנסרקו וייחסכו מדי חודש באמצעות התצוגה המוצעת.
content.overview.baseTables CREATE_MATERIALIZED_VIEW שמור לשימוש בעתיד.

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

$ curl
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/insightTypes/google.bigquery.materializedview.Insight/insights

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

  • PROJECT_NAME: שם הפרויקט שמכיל את הטבלה ב-BigQuery
  • LOCATION: המיקום שבו נמצא הפרויקט.
בטבלה הבאה מפורטים השדות החשובים בתגובה של Insights API:

מאפיין (property) רלוונטי לסוג משנה תיאור
content.queryCount CREATE_MATERIALIZED_VIEW מספר השאילתות בתקופת התצפית עם דפוס חוזר שאפשר לבצע אופטימיזציה שלהן באמצעות תצוגה חומרית.

צפייה בהמלצות עם INFORMATION_SCHEMA

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

SELECT
   recommender,
   target_resources,
   LAX_INT64(additional_details.overview.bytesSavedMonthly) / POW(1024, 3) as est_gb_saved_monthly,
   LAX_INT64(additional_details.overview.slotMsSavedMonthly) / (1000 * 3600) as slot_hours_saved_monthly,
  last_updated_time
FROM
  `region-us`.INFORMATION_SCHEMA.RECOMMENDATIONS
WHERE
   primary_impact.category = 'COST'
AND
   state = 'ACTIVE'
ORDER by
   slot_hours_saved_monthly DESC
LIMIT 3;
INFORMATION_SCHEMA

התוצאה אמורה להיראות כך:

+---------------------------------------------------+--------------------------------------------------------------------------------------------------+
|                    recommender                    |   target_resources      | est_gb_saved_monthly | slot_hours_saved_monthly |  last_updated_time
+---------------------------------------------------+--------------------------------------------------------------------------------------------------+
| google.bigquery.materializedview.Recommender      | ["project_resource"]    | 140805.38289248943   |        9613.139166666666 |  2024-07-01 13:00:00
| google.bigquery.table.PartitionClusterRecommender | ["table_resource_1"]    | 4393.7416711859405   |        56.61476777777777 |  2024-07-01 13:00:00
| google.bigquery.table.PartitionClusterRecommender | ["table_resource_2"]    |   3934.07264107652   |       10.499466666666667 |  2024-07-01 13:00:00
+---------------------------------------------------+--------------------------------------------------------------------------------------------------+

מידע נוסף זמין במקורות המידע הבאים:

החלת המלצות לתצוגות חומריות

כדי להחיל המלצה ליצירת תצוגה חומרית, מריצים את הצהרת ה-DDL מהסוג CREATE MATERIALIZED VIEW שמוצעת במסוף Google Cloud .

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

    כניסה ל-BigQuery

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

  3. תיפתח החלונית BigQuery Recommendations. בקטע Optimize BigQuery workload cost (אופטימיזציה של עלות עומס העבודה ב-BigQuery), לוחצים על View details (הצגת פרטים).

    צפייה בפרטים כדי לראות את כל ההמלצות ל-BigQuery

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

  5. לוחצים על View in BigQuery Studio (הצגה ב-BigQuery Studio). ייפתח עורך SQL עם הצהרת DDL‏ CREATE MATERIALIZED VIEW.

  6. במשפט CREATE MATERIALIZED VIEW שצוין, משנים את הפלייס הולדר MATERIALIZED_VIEW לשם ייחודי של תצוגה חומרית.

  7. מריצים את הצהרת ה-DDL‏ CREATE MATERIALIZED VIEW כדי ליצור תצוגה מהותית מומלצת.

פתרון בעיות בהמלצות

בעיה: לא מופיעות המלצות לטבלה מסוימת.

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

  • לא נמצאו דפוסי שאילתות חוזרים בין משימות השאילתות שהופעלו על ידי פרויקט.
  • דפוסי שאילתות חוזרים לא עומדים במגבלות של תצוגות מהותיות מצטברות, ולא ניתן להכניס אותם לתצוגה מהותית שמתאימה להתאמה חכמה.
  • לתצוגה מהותית פוטנציאלית תהיה עלות תחזוקה גבוהה. לדוגמה, טבלאות מקור משתנות לעיתים קרובות על ידי פעולות של שפת טיפול בנתונים (DML), ולכן תצוגה חומרית תעבור רענון מלא, מה שיוביל לעלויות נוספות.
  • אין מספיק שאילתות עם דפוס משותף שחוזר על עצמו.
  • החיסכון החודשי המשוער נמוך מדי (פחות מ-1 משבצת).
  • עבודות של שאילתות שהופעלו על ידי הפרויקט כבר משתמשות בתצוגות מהותיות.

תמחור

אין עלות או השפעה שלילית על ביצועי עומס העבודה כשצופים בהמלצות.

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