יצירת אינדקס של מטא-נתונים לטבלאות BigQuery
במאמר הזה מוסבר על יצירת אינדקס של מטא-נתונים של עמודות ב-BigQuery, ואיך להקצות משאבים ייעודיים כדי לשפר את עדכניות האינדקס וביצועי השאילתות.
מערכת BigQuery יוצרת באופן אוטומטי אינדקס של מטא-נתונים לטבלאות BigQuery שגודלן עולה על 1 GiB. המטא-נתונים האלה כוללים את מיקום הקובץ, מידע על חלוקה למחיצות ומאפיינים ברמת העמודה, ש-BigQuery משתמש בהם כדי לבצע אופטימיזציה של השאילתות ולהריץ אותן מהר יותר.
כברירת מחדל, יצירת אינדקס של מטא-נתונים ב-BigQuery היא פעולה חינמית שמתבצעת ברקע, ולא נדרשת פעולה מצדכם. עם זאת, רעננות האינדקס תלויה במשאבים החינמיים שזמינים, ואין לה יעדים למדידת רמת השירות (SLO) של הביצועים. אם רענון האינדקס הוא קריטי לתרחיש השימוש שלכם, מומלץ להגדיר BACKGROUND הזמנה, שמשתפת משאבים בין משימות אופטימיזציה ברקע.
הצגת שעת הרענון של אינדקס המטא-נתונים
כדי לראות את מועד הרענון האחרון של אינדקס המטא-נתונים של טבלה, מריצים שאילתה בעמודה LAST_METADATA_INDEX_REFRESH_TIME של התצוגה INFORMATION_SCHEMA.TABLE_STORAGE.
כדי לעשות זאת:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
SELECT project_id, project_number, table_name, last_metadata_index_refresh_time FROM [
PROJECT_ID.]region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE;מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
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;
הגדרה של משאבי אינדוקס ייעודיים
כדי להגדיר משאבים לעדכונים של יצירת אינדקס של מטא-נתונים בפרויקט, קודם צריך להקצות הזמנה לפרויקט. כדי לעשות זאת:
אחרי שמגדירים את ההזמנה, בוחרים באחת מהשיטות הבאות כדי להקצות משבצות זמן למשימת יצירת האינדקס של המטא-נתונים. כברירת מחדל, משבצות שאתם מקצים באופן הזה משותפות עם משימות אחרות אם הן פנויות. מידע נוסף זמין במאמר בנושא משבצות זמן פנויות.
המסוף
נכנסים לדף Capacity Management במסוף Cloud de Confiance .
לוחצים על פעולות שקשורות להזמנת משאבים > יצירת הקצאה.
בוחרים את פרויקט ההזמנה.
מגדירים את סוג העבודה בתור רקע.
לוחצים על יצירה.
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.
במסוף Cloud de Confiance , עוברים לדף 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 ולוחצים על View details (הצגת פרטים).
בכרטיסייה התראות, בוחרים באפשרות Slot Usage - Background Metadata Cache Slot Usage Too High (שימוש במשבצת – השימוש במשבצת של מטמון מטא-נתונים ברקע גבוה מדי).
אופציונלי: כדי להתאים אישית את ההתראה, לוחצים על הצגת אפשרויות > התאמה אישית של מדיניות ההתראות.
בקטע Configure notifications (הגדרת התראות), בוחרים את ערוץ ההתראות.
לוחצים על יצירה.
התראה על נתונים לא עדכניים
ההתראה הזו מודיעה לכם כשמידת העדכניות של אינדקס המטא-נתונים של עמודת הממוצע עולה יותר מדי בהשוואה לממוצע הקיים. סף ברירת המחדל הוא: אם הממוצע במשך 4 שעות גבוה יותר מהממוצע הקודם ביותר מפי שניים במשך יותר מ-30 דקות. אם ההתראה הזו מופיעה, מומלץ להגדיל את גודל ההזמנה או ליצור הזמנה ברקע אם עדיין לא יצרתם אחת כזו.
כדי להגדיר את ההתראה הזו:
- אם עדיין לא עשיתם את זה, כדאי להגדיר ערוץ התראות לניטור.
עוברים לדף שילובים.
מחפשים את השילוב BigQuery ולוחצים על View details (הצגת פרטים).
בכרטיסייה התראות, בוחרים באפשרות האינדקס של המטא-נתונים על העמודה לא מעודכן – עלייה גדולה מדי באחוזים.
אופציונלי: כדי להתאים אישית את ההתראה, לוחצים על הצגת אפשרויות > התאמה אישית של מדיניות ההתראות.
בקטע Configure notifications (הגדרת התראות), בוחרים את ערוץ ההתראות.
לוחצים על יצירה.
שיקולי ביצועים
בעוד ש-BigQuery מבצע גיזום אוטומטי של נתונים באמצעות חלוקה למחיצות וקיבוץ באשכולות, יצירת אינדקס של מטא-נתונים יכולה לשפר עוד יותר את השאילתות על ידי גיזום נתונים על סמך עמודות שלא משמשות לחלוקה למחיצות או לקיבוץ באשכולות. יעילות הגיזום הזה גדלה כשיש תלות בסדר בין עמודת המסנן לבין עמודות החלוקה למחיצות או עמודות האשכולות של הטבלה. במקרים כאלה, יכול להיות שתראו פחות בייטים שנסרקו מהצפוי, גם כשמסננים עמודות שלא נכללות באופן מפורש בהגדרת האשכולות של הטבלה. אם טבלה מחולקת למחיצות אבל לא מסודרת באשכולות, יעילות ההסרה מוגבלת בשאילתות לפי דרישה, ויכול להיות שלא תראו צמצום במספר הבייטים שנסרקו.
מגבלות
השיפורים בביצועים של שאילתות לקבלת מטא-נתונים חלים רק על הצהרות SELECT, INSERT ו-CREATE TABLE AS SELECT. הצהרות של שפת טיפול בנתונים (DML) לא יראו שיפורים מאינדוקס מטא-נתונים.