הוספה לאינדקס של מטא-נתונים בטבלאות ב-BigQuery
BigQuery מוסיף באופן אוטומטי לאינדקס את המטא-נתונים של העמודות בטבלאות ב-BigQuery שגדולות מ-1GiB, ומשתמש באינדקס הזה כדי להאיץ את השאילתות. המטא-נתונים כוללים את מיקומי הקבצים, מידע על החלוקה למחיצות ומאפיינים ברמת העמודה. כברירת מחדל, הוספה לאינדקס היא פעולה חינמית שמתבצעת ברקע, אבל עדכניות האינדקס תלויה במשאבים החינמיים הזמינים, ואין לה יעדים למדידת רמת השירות (SLO) של הביצועים.
אם עדכניות האינדקס קריטית לעומס העבודה, אתם יכולים להקצות משאבים ייעודיים על ידי הגדרת הזמנת BACKGROUND.
במאמר הזה מוסבר איך לעקוב אחרי העדכניות והשימוש באינדקס, להגדיר משאבי הוספה לאינדקס ייעודיים ולהגדיר התראות לגבי הוספה לאינדקס.
הצגת זמן הרענון של אינדקס המטא-נתונים
כדי לראות את מועד הרענון האחרון של אינדקס המטא-נתונים של טבלה, שולחים שאילתה לעמודה LAST_METADATA_INDEX_REFRESH_TIME של התצוגה INFORMATION_SCHEMA.TABLE_STORAGE.
כדי לעשות את זה:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
SELECT project_id, project_number, table_name, last_metadata_index_refresh_time FROM [
PROJECT_ID.]region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE;מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: האזור שבו נמצא הפרויקט, לדוגמהregion-us.
-
לוחצים על הפעלה.
הצגת השימוש באינדקס של המטא-נתונים על העמודה
כדי לבדוק אם נעשה שימוש באינדקס של המטא-נתונים על העמודה אחרי שהמשימה הסתיימה, בודקים את המאפיין TableMetadataCacheUsage של המשאב Job. אם השדה unusedReason ריק (לא מאוכלס), נעשה שימוש באינדקס של המטא-נתונים על העמודה. אם הוא מאוכלס, השדה הנלווה explanation מציין את הסיבה לכך שלא נעשה שימוש באינדקס של המטא-נתונים על העמודה.
אפשר גם לראות את השימוש באינדקס של המטא-נתונים על העמודה בשדה metadata_cache_statistics בתצוגה INFORMATION_SCHEMA.JOBS.
לדוגמה, הפקודה הבאה מציגה את השימוש באינדקס של המטא-נתונים על העמודות במשימה my-job:
SELECT metadata_cache_statistics FROM `region-US`.INFORMATION_SCHEMA.JOBS WHERE job_id = 'my-job';
דוגמה נוספת: השאילתה הבאה מציגה את מספר המשימות שהשתמשו באינדקס של המטא-נתונים על העמודות בטבלה my-table:
SELECT COUNT(*) FROM `region-US`.INFORMATION_SCHEMA.JOBS, UNNEST(metadata_cache_statistics.table_metadata_cache_usage) AS stats WHERE stats.table_reference.table_id='my-table' AND stats.table_reference.dataset_id='my-dataset' AND stats.table_reference.project_id='my-project' AND stats.unusedReason IS NULL;
הגדרת משאבי הוספה לאינדקס ייעודיים
כדי להגדיר משאבים לעדכוני הוספה לאינדקס של מטא-נתונים בפרויקט, קודם צריך להקצות לפרויקט הזמנה. כדי לעשות את זה:
- יוצרים הזמנה ב-
BACKGROUND. הזמנה מסוגBACKGROUNDמשתפת משאבים בין משימות אופטימיזציה ברקע. - מקצים את הפרויקט להזמנה.
אחרי שמגדירים את ההזמנה, בוחרים באחת מהשיטות הבאות כדי להקצות משבצות למשימת הוספת המטא-נתונים לאינדקס. כברירת מחדל, אם ה-slots שהקציתם בצורה הזו לא פעילים, הם משותפים עם משימות אחרות. מידע נוסף זמין במאמר משבצות לא פעילות.
המסוף
נכנסים לדף Workload management במסוף Google Cloud .
לוחצים על Reservation actions > Create assignment.
בוחרים את הפרויקט של ההזמנה.
מגדירים את סוג העבודה בתור Background.
לוחצים על יצירה.
BQ
משתמשים בפקודה bq mk.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=PROJECT_ID \ --job_type=BACKGROUND \ --assignee_type=PROJECT
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה. -
LOCATION: המיקום של ההזמנה. -
RESERVATION_NAME: שם ההזמנה. -
PROJECT_ID: מזהה הפרויקט שרוצים להקצות להזמנה הזו.
SQL
כדי להקצות הזמנה לפרויקט, משתמשים בהצהרת ה-DDL CREATE ASSIGNMENT.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
מחליפים את הערכים בשדות הבאים:CREATE ASSIGNMENT ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID OPTIONS ( assignee = 'projects/PROJECT_ID', job_type = 'BACKGROUND');
-
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה. -
LOCATION: המיקום של ההזמנה. -
RESERVATION_NAME: שם ההזמנה. -
ASSIGNMENT_ID: מזהה המטלה. המזהה חייב להיות ייחודי לפרויקט ולמיקום, להתחיל ולהסתיים באות קטנה או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים. -
PROJECT_ID: מזהה הפרויקט שמכיל את הטבלאות. הפרויקט הזה מוקצה להזמנה.
-
לוחצים על הפעלה.
הצגת מידע על משימות הוספה לאינדקס
אחרי שמגדירים את משימות ההוספה לאינדקס, אפשר לראות מידע על המשימות האלה באמצעות התצוגה JOBS.
בדוגמה הבאה של SQL מוצגות חמש משימות הרענון האחרונות ב-PROJECT_NAME.
SELECT * FROM region-us.INFORMATION_SCHEMA.JOBS WHERE project_id = 'PROJECT_NAME' AND SEARCH(job_id, '`metadata_cache_refresh`') ORDER BY creation_time DESC LIMIT 5;
מחליפים את PROJECT_NAME בשם הפרויקט שמכיל את משימות הוספת המטא-נתונים לאינדקס.
הגדרת התראות על הוספת מטא-נתונים לאינדקס
תהליך ההתראות של Cloud Monitoring מודיע לכם כשהביצועים של BigQuery לא עומדים בקריטריונים שהגדרתם. מידע נוסף מופיע בסקירה הכללית על התראות. באמצעות הוספה לאינדקס של מטא-נתונים, אתם יכולים להגדיר התראות על שימוש במשבצות ועל חוסר עדכניות.
התראה על שימוש ב-Slots
ההתראה הזו מודיעה לכם כשההזמנה ברקע חורגת מאחוז מסוים מההקצאה שלה. ערך ברירת המחדל הוא 95%. אפשר להגדיר את ההתראה הזו להזמנה ספציפית או לכל הזמנה ברקע. כשההתראה הזו מופעלת, מומלץ להגדיל את נפח ההזמנה.
כדי להגדיר את ההתראה הזו לכל הזמנה ברקע:
- אם עדיין לא עשיתם זאת, הגדירו ערוץ התראות של Monitoring.
עוברים לדף שילובים.
מוצאים את השילוב עם BigQuery ולוחצים על הצגת פרטים.
בכרטיסייה Alerts, בוחרים באפשרות Slot Usage - Background Metadata Cache Slot Usage Too High.
אופציונלי: כדי להתאים אישית את ההתראה, לוחצים על הצגת האפשרויות > התאמה אישית של מדיניות ההתראות.
בקטע Configure notifications, בוחרים את ערוץ ההתראות.
לוחצים על יצירה.
התראה על חוסר עדכניות
ההתראה הזו נשלחת כשהממוצע של מדד חוסר העדכניות של המטא-נתונים של העמודות עולה יותר מדי בהשוואה לממוצע הקיים. סף ברירת המחדל הוא אם הממוצע במשך 4 שעות הוא יותר מכפול מהממוצע הקודם במשך יותר מ-30 דקות. כשההתראה הזו מופעלת, מומלץ להגדיל את ההזמנה או ליצור הזמנה ברקע אם אין לכם אחת כזו.
כדי להגדיר את ההתראה הזו:
- אם עדיין לא עשיתם זאת, הגדירו ערוץ התראות של Monitoring.
עוברים לדף שילובים.
מוצאים את השילוב עם BigQuery ולוחצים על הצגת פרטים.
בכרטיסייה Alerts, בוחרים באפשרות Column Metadata Index Staleness - Too Much Percent Increase.
אופציונלי: כדי להתאים אישית את ההתראה, לוחצים על הצגת האפשרויות > התאמה אישית של מדיניות ההתראות.
בקטע Configure notifications, בוחרים את ערוץ ההתראות.
לוחצים על יצירה.
שיקולי ביצועים
BigQuery מסנן נתונים באופן אוטומטי באמצעות חלוקה למחיצות ואשכולות, אבל הוספת אינדקס למטא-נתונים יכולה לשפר עוד יותר את השאילתות על ידי סינון נתונים על סמך עמודות שלא משמשות לחלוקה למחיצות או לאשכולות. היעילות של הגיזום הזה עולה כשיש תלות בסדר בין עמודת הסינון לבין עמודות החלוקה למחיצות או האשכולות של הטבלה. במקרים כאלה, יכול להיות שתראו פחות בייטים שנסרקו מהצפוי, גם כשמסננים לפי עמודות שלא נכללות באופן מפורש בהגדרת האשכולות של הטבלה. אם טבלה מחולקת למחיצות אבל לא מסודרת באשכולות, יעילות הגיזום מוגבלת לשאילתות על פי דרישה, ויכול להיות שלא תראו הפחתה בבייטים שנסרקו.
מגבלות
השיפורים בביצועים של שאילתות לקבלת מטא נתונים חלים רק על הצהרות SELECT, INSERT ו-CREATE TABLE AS SELECT. פקודות של שפת טיפול בנתונים (DML) לא יושפעו משיפורים באינדקס המטא-נתונים.