יצירת אינדקס של מטא-נתונים לטבלאות BigQuery
במאמר הזה מוסבר על יצירת אינדקס של מטא-נתונים של עמודות ב-BigQuery, ואיך להקצות משאבים ייעודיים כדי לשפר את עדכניות האינדקס ואת ביצועי השאילתות.
המטא-נתונים של טבלאות BigQuery שגודלן עולה על 1 גיגה-בייט עוברים אינדוקס אוטומטי ב-BigQuery. המטא-נתונים האלה כוללים את מיקום הקובץ, מידע על חלוקה למחיצות ומאפיינים ברמת העמודה, ש-BigQuery משתמש בהם כדי לבצע אופטימיזציה של השאילתות ולהריץ אותן מהר יותר.
כברירת מחדל, יצירת אינדקס של מטא-נתונים ב-BigQuery היא פעולה חינמית שמתבצעת ברקע, ולא נדרשת פעולה מצדכם. עם זאת, רעננות האינדקס תלויה במשאבים החינמיים שזמינים, ואין לה יעדים למדידת רמת השירות (SLO) של הביצועים. אם רענון האינדקס הוא קריטי לתרחיש השימוש שלכם, מומלץ להגדיר BACKGROUND הקצאת משאבים, שמשתפת משאבים בין משימות אופטימיזציה ברקע.
הצגת זמן הרענון של אינדקס המטא-נתונים
כדי לראות את מועד הרענון האחרון של אינדקס המטא-נתונים של טבלה, מריצים שאילתה בעמודה LAST_METADATA_INDEX_REFRESH_TIME בתצוגה INFORMATION_SCHEMA.TABLE_STORAGE.
כדי לעשות זאת:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
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 של משאב העבודה. אם השדה 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;
הגדרה של משאבי אינדוקס ייעודיים
כדי להגדיר משאבים לעדכונים של יצירת אינדקס של מטא-נתונים בפרויקט, קודם צריך להקצות הזמנה לפרויקט. כדי לעשות זאת:
אחרי שמגדירים את ההזמנה, בוחרים באחת מהשיטות הבאות כדי להקצות משבצות למשימת יצירת האינדקס של המטא-נתונים. כברירת מחדל, משבצות שאתם מקצים באופן הזה משותפות עם משימות אחרות אם המשבצות פנויות. מידע נוסף זמין במאמר בנושא משבצות זמן פנויות.
המסוף
נכנסים לדף Capacity Management במסוף Google Cloud .
לוחצים על פעולות שקשורות להזמנת משאבים > יצירת הקצאה.
בוחרים את פרויקט ההזמנה.
מגדירים את סוג המשימה בתור רקע.
לוחצים על יצירה.
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
כדי להקצות הזמנה לפרויקט, משתמשים בהצהרת DDLCREATE ASSIGNMENT.
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
מחליפים את מה שכתוב בשדות הבאים: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 לא עומדים בקריטריונים שהוגדרו. מידע נוסף מופיע במאמר סקירה כללית על התראות. באמצעות יצירת אינדקס של מטא-נתונים, אפשר להגדיר התראות על שימוש במשבצות ועל נתונים לא עדכניים.
התראה על שימוש ביחידת קיבולת (Slot)
ההתראה הזו מודיעה לכם כשההזמנה ברקע חורגת מאחוז מוגדר מההקצאה שלה. ערך ברירת המחדל הוא 95%. אפשר להגדיר את ההתראה הזו להזמנה ספציפית או לכל הזמנה של שטחי פרסום ברקע. כשמופעלת ההתראה הזו, מומלץ להגדיל את גודל המקום השמור.
כדי להגדיר את ההתראה הזו לכל הזמנה של שטחי פרסום ברקע:
- אם עדיין לא עשיתם את זה, כדאי להגדיר ערוץ התראות למעקב.
עוברים לדף שילובים.
מחפשים את השילוב BigQuery ולוחצים על הצגת פרטים.
בכרטיסייה התראות, בוחרים באפשרות Slot Usage - Background Metadata Cache Slot Usage Too High (שימוש במשבצת – שימוש במשבצת של מטמון מטא-נתונים ברקע גבוה מדי).
אופציונלי: כדי להתאים אישית את ההתראה, לוחצים על הצגת אפשרויות > התאמה אישית של מדיניות ההתראות.
בקטע הגדרת התראות, בוחרים את ערוץ ההתראות.
לוחצים על יצירה.
התראה על נתונים לא עדכניים
ההתראה הזו מודיעה לכם כשמדד העדכניות של מטא-נתוני העמודה הממוצעת עולה יותר מדי בהשוואה לממוצע הקיים. סף ברירת המחדל הוא אם הממוצע במשך 4 שעות גדול יותר מפי שניים מהממוצע הקודם במשך יותר מ-30 דקות. אם האזהרה הזו מופיעה, מומלץ להגדיל את נפח ההזמנה או ליצור הזמנה ברקע אם עדיין לא יצרתם אחת כזו.
כדי להגדיר את ההתראה הזו:
- אם עדיין לא עשיתם את זה, כדאי להגדיר ערוץ התראות למעקב.
עוברים לדף שילובים.
מחפשים את השילוב BigQuery ולוחצים על הצגת פרטים.
בכרטיסייה התראות, בוחרים באפשרות האינדקס של המטא-נתונים על העמודה לא מעודכן – עלייה גדולה מדי באחוזים.
אופציונלי: כדי להתאים אישית את ההתראה, לוחצים על הצגת אפשרויות > התאמה אישית של מדיניות ההתראות.
בקטע הגדרת התראות, בוחרים את ערוץ ההתראות.
לוחצים על יצירה.
מגבלות
השיפורים בביצועים של שאילתות לקבלת מטא-נתונים חלים רק על הצהרות SELECT, INSERT ו-CREATE TABLE AS SELECT. הצהרות של שפת טיפול בנתונים (DML) לא יראו שיפורים מאינדוקס מטא-נתונים.