הערכת עלויות ובקרה עליהן
בדף הזה מתוארות שיטות מומלצות להערכת העלויות ב-BigQuery ולשליטה בהן.
העלויות העיקריות ב-BigQuery הן על מחשוב, שמשמש לעיבוד שאילתות, ועל אחסון, שמשמש לאחסון נתונים ב-BigQuery. ב-BigQuery יש שני סוגים של מודלים לתמחור של עיבוד שאילתות: תמחור לפי דרישה ותמחור לפי קיבולת. כל מודל מציע שיטות מומלצות שונות לשליטה בעלויות. לנתונים שמאוחסנים ב-BigQuery, העלויות תלויות במודל החיוב על אחסון שהוגדר לכל מערך נתונים.
הסבר על תמחור של מחשוב ב-BigQuery
יש הבדלים קלים בתמחור של המחשוב ב-BigQuery, שמשפיעים על תכנון הקיבולת ועל ניהול העלויות.
מודלים של תמחור
ב-BigQuery, עלויות החישוב לפי דרישה מחושבות לפי TiB עבור שאילתות BigQuery.
לחלופין, כשמחשבים את הקיבולת ב-BigQuery, אתם מחויבים על משאבי המחשוב (יחידות קיבולת) שמשמשים לעיבוד השאילתה. כדי להשתמש במודל הזה, צריך להגדיר הזמנות למשבצות.
התכונות של ההזמנות:
- הם מוקצים במאגרי משבצות, ומאפשרים לכם לנהל את הקיבולת ולבודד עומסי עבודה בדרכים שמתאימות לארגון שלכם.
- הם צריכים להיות בפרויקט ניהול אחד, והם כפופים למכסות ומגבלות.
מודל התמחור לפי קיבולת מציע כמה מהדורות, שלכולן יש אפשרות של תשלום לפי שימוש שמחויב בשעות שימוש במשבצת. מהדורות Enterprise ו-Enterprise Plus מספקות גם התחייבויות אופציונליות למשבצות זמן לשנה או לשלוש שנים, שיכולות לחסוך כסף בהשוואה לתעריף של תשלום לפי שימוש.
אפשר גם להגדיר הזמנות של התאמה אוטומטית לעומס באמצעות האפשרות של תשלום לפי שימוש. מידע נוסף:
- כדי להשוות בין מודלים של תמחור, אפשר לעיין במאמר בנושא בחירת מודל.
- פרטים על התמחור זמינים במאמרים תמחור של משאבי מחשוב על פי דרישה ותמחור של משאבי מחשוב לפי קיבולת.
הגבלת העלויות לכל מודל
כשמשתמשים במודל התמחור על פי דרישה, הדרך היחידה להגביל את העלויות היא להגדיר מכסות יומיות ברמת הפרויקט או ברמת המשתמש. עם זאת, המכסות האלה מגבילות את המשתמשים ומאפשרות להם להריץ שאילתות רק עד למגבלת המכסה. הוראות להגדרת מכסות מופיעות במאמר יצירת מכסות מותאמות אישית לשאילתות.
כשמשתמשים במודל התמחור לפי קיבולת באמצעות הזמנת משבצות זמן, מציינים את מספר המשבצות המקסימלי שזמינות להזמנה. אתם יכולים גם לרכוש התחייבויות לשימוש במשבצות, שמספקות מחירים מוזלים לתקופה מוגדרת.
אתם יכולים להשתמש במהדורות באופן מלא על פי דרישה על ידי הגדרת בסיס ההזמנה ל-0 והמקסימום להגדרה שתענה על צורכי עומס העבודה שלכם. המערכת של BigQuery מגדילה באופן אוטומטי את מספר המשבצות בהתאם לעומס העבודה, אבל אף פעם לא מעבר למספר המקסימלי שהגדרתם. מידע נוסף זמין במאמר ניהול עומסי עבודה באמצעות הזמנות.
שליטה בעלויות של שאילתות
כדי לשלוט בעלויות של שאילתות ספציפיות, מומלץ קודם לפעול לפי השיטות המומלצות לאופטימיזציה של חישוב השאילתות ואופטימיזציה של האחסון.
בקטעים הבאים מפורטות שיטות מומלצות נוספות שיכולות לעזור לכם לשלוט בעלויות של השאילתות.
יצירת מכסות שאילתות בהתאמה אישית
שיטה מומלצת: כדאי להשתמש במכסות מותאמות אישית לשאילתות יומיות כדי להגביל את כמות הנתונים שעוברת עיבוד בכל יום.
כדי לנהל את העלויות, אפשר להגדיר מכסה בהתאמה אישית שמציינת מגבלה על כמות הנתונים שעוברים עיבוד בכל יום לכל פרויקט או לכל משתמש. המשתמשים לא יכולים להריץ שאילתות אחרי שמגיעים למכסת השימוש.
כדי להגדיר מכסה בהתאמה אישית, צריך תפקידים או הרשאות ספציפיות. מידע על המכסות שאפשר להגדיר מופיע במאמר מכסות ומגבלות.
מידע נוסף מופיע במאמר בנושא הגבלת העלויות לכל מודל תמחור.
בדיקת העלות המשוערת לפני הרצת שאילתה
שיטה מומלצת: לפני שמריצים שאילתות, כדאי להציג אותן בתצוגה מקדימה כדי להעריך את העלויות.
כשמשתמשים במודל התמחור על פי דרישה, החיוב על שאילתות מתבצע לפי מספר הבייטים שנקראו. כדי להעריך את העלויות לפני שמריצים שאילתה:
- משתמשים בכלי לבדיקת תקינות שאילתות במסוף Google Cloud .
- הרצת סימולציה לשאילתות.
שימוש בכלי לתיקוף שאילתות
כשמזינים שאילתה ב Google Cloud מסוף, כלי לאימות שאילתות מאמת את תחביר השאילתה ומספק הערכה של מספר הבייטים שנקראו. אפשר להשתמש בהערכה הזו כדי לחשב את עלות השאילתה במחשבון התמחור.
אם השאילתה לא תקינה, הכלי לתיקוף שאילתות יציג הודעת שגיאה. לדוגמה:
Not found: Table myProject:myDataset.myTable was not found in location USאם השאילתה תקינה, הכלי לתיקוף שאילתות יספק הערכה של מספר הבייטים שנדרשים לעיבוד השאילתה. לדוגמה:
This query will process 623.1 KiB when run.
ביצוע הרצה יבשה
כדי לבצע הרצה יבשה:
המסוף
נכנסים לדף BigQuery.
מזינים את השאילתה בעורך השאילתות.
אם השאילתה תקינה, יופיע אוטומטית סימן וי לצד כמות הנתונים שהשאילתה תעבד. אם השאילתה לא תקינה, יופיע סימן קריאה לצד הודעת שגיאה.
BQ
מזינים שאילתה כמו זו שבהמשך באמצעות הדגל --dry_run.
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
אם השאילתה תקינה, הפקודה תחזיר את התגובה הבאה:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
כדי לבצע הרצה יבשה באמצעות ה-API, שולחים עבודת שאילתה עם dryRun שמוגדר ל-true בסוג JobConfiguration.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי PHPהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery PHP API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
מגדירים את המאפיין QueryJobConfig.dry_run בתור True.
Client.query()
תמיד מחזירה QueryJob
שהסתיים כשמספקים הגדרת שאילתה של הרצה יבשה.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הערכת העלויות של שאילתות
כשמשתמשים במודל התמחור על פי דרישה, אפשר להעריך את העלות של הרצת שאילתה על ידי חישוב מספר הבייטים שעובדו.
חישוב הגודל של שאילתות על פי דרישה
כדי לחשב את מספר הבייטים שעברו עיבוד על ידי סוגים שונים של שאילתות, אפשר לעיין בסעיפים הבאים:
הימנעות מהרצת שאילתות כדי לבדוק את נתוני הטבלה
שיטה מומלצת: אל תריצו שאילתות כדי לעיין בנתוני טבלה או לראות תצוגה מקדימה שלהם.
אם אתם עורכים ניסויים בנתונים או בודקים אותם, אתם יכולים להשתמש באפשרויות של תצוגה מקדימה של טבלה כדי לראות את הנתונים ללא תשלום ובלי להשפיע על המכסות.
BigQuery תומך באפשרויות הבאות לתצוגה מקדימה של נתונים:
- במסוף Google Cloud , בדף הפרטים של הטבלה, לוחצים על הכרטיסייה תצוגה מקדימה כדי לראות דוגמה של הנתונים.
- בכלי שורת הפקודה של BigQuery, משתמשים בפקודה
bq headומציינים את מספר השורות שרוצים לראות בתצוגה המקדימה. - ב-API, משתמשים ב-
tabledata.listכדי לאחזר נתונים של טבלה ממערך שורות ספציפי. - לא מומלץ להשתמש ב-
LIMITבטבלאות לא מקובצות. בטבלאות לא מקובצות, סעיףLIMITלא יפחית את עלויות החישוב.
הגבלת מספר הבייטים שמחויבים לכל שאילתה
שיטה מומלצת: כשמשתמשים במודל התמחור על פי דרישה, כדאי להשתמש בהגדרה 'מקסימום בייט לחיוב' כדי להגביל את עלויות השאילתות.
אפשר להגביל את מספר הבייטים שחויבו עבור שאילתה באמצעות ההגדרה 'מספר מקסימלי של בייטים שחויבו'. כשמגדירים את מספר הבייטים המקסימלי לחיוב, המערכת מעריכה את מספר הבייטים שהשאילתה קוראת לפני שהיא מופעלת. אם מספר הבייטים המשוער חורג מהמגבלה, השאילתה תיכשל ולא יחויב עליה תשלום.
בטבלאות מקובצות, האומדן של מספר הבייטים שחויבו על שאילתה הוא גבול עליון, ויכול להיות שהוא יהיה גבוה ממספר הבייטים בפועל שחויבו אחרי הפעלת השאילתה. לכן, במקרים מסוימים, אם מגדירים את מספר הבייטים המקסימלי שיחויבו, יכול להיות ששאילתה בטבלה מסודרת באשכולות תיכשל, גם אם מספר הבייטים בפועל שיחויבו לא יעלה על מספר הבייטים המקסימלי שיחויבו.
אם שאילתה נכשלת בגלל ההגדרה של מספר הבייטים המקסימלי לחיוב, מוחזרת שגיאה שדומה לזו שמוצגת בהמשך:
Error: Query exceeded limit for bytes billed: 1000000. 10485760 or higher
required.
כדי להגדיר את מספר הבייטים המקסימלי שיחויבו:
המסוף
- בQuery editor (עורך השאילתות), לוחצים על More > Query settings > Advanced options (עוד > הגדרות של שאילתות > אפשרויות מתקדמות).
- בשדה מספר הבייטים המקסימלי שיחויבו, מזינים מספר שלם.
- לוחצים על Save.
BQ
משתמשים בפקודה bq query עם הדגל --maximum_bytes_billed.
bq query --maximum_bytes_billed=1000000 \ --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare'
API
מגדירים את המאפיין maximumBytesBilled ב-JobConfigurationQuery או ב-QueryRequest.
מומלץ להימנע משימוש ב-LIMIT בטבלאות לא מקובצות
שיטה מומלצת: בטבלאות לא מקובצות, אל תשתמשו בסעיף LIMIT כשיטה לבקרת עלויות.
בטבלאות לא מקובצות, החלת פסקה של LIMIT על שאילתה לא משפיעה על כמות הנתונים שנקראים. תחויבו על קריאת כל הבייטים בכל הטבלה, כפי שמצוין בשאילתה, גם אם השאילתה מחזירה רק קבוצת משנה. בטבלה מסודרת באשכולות, סעיף LIMIT יכול להקטין את מספר הבייטים שנסרקים, כי הסריקה נפסקת כשנסרקים מספיק בלוקים כדי לקבל את התוצאה. החיוב מתבצע רק על הבייטים שנסרקים.
יצירת תוצאות של שאילתות בשלבים
שיטה מומלצת: אם אפשר, כדאי להפוך את תוצאות השאילתה למוחשיות בשלבים.
אם יוצרים שאילתה גדולה עם כמה שלבים, בכל פעם שמריצים אותה, BigQuery קורא את כל הנתונים שנדרשים בשאילתה. תחויבו על כל הנתונים שנקראים בכל פעם שהשאילתה מופעלת.
במקום זאת, צריך לחלק את השאילתה לשלבים, כשבכל שלב התוצאות של השאילתה נכתבות לטבלת יעד. הפעלת שאילתה בטבלת היעד הקטנה יותר מצמצמת את כמות הנתונים שנקראים ומפחיתה את העלויות. העלות של אחסון התוצאות המגובשות נמוכה בהרבה מהעלות של עיבוד כמויות גדולות של נתונים.
שימוש ב-Anywhere Cache כדי לשלוח שאילתות ל-Cloud Storage עם טבלאות חיצוניות
שיטה מומלצת: כדאי להפעיל את Anywhere Cache כשמבצעים שאילתות על נתונים ב-Cloud Storage באמצעות טבלאות חיצוניות.
Anywhere Cache מספק מטמון קריאה אזורי שמגובה על ידי SSD עבור קטגוריות Cloud Storage, שיכול לשפר את ביצועי השאילתות ולהפחית את עלויות השאילתות כששולחים שאילתות על טבלאות חיצוניות. מידע נוסף זמין במאמר בנושא אופטימיזציה של שאילתות בטבלאות חיצוניות ב-Cloud Storage.
שליטה בעלויות של עומסי עבודה
בקטע הזה מתוארות שיטות מומלצות לשליטה בעלויות של עומס עבודה. עומס עבודה הוא קבוצה של שאילתות קשורות. לדוגמה, עומס עבודה יכול להיות צינור להמרת נתונים שפועל מדי יום, קבוצה של לוחות בקרה שמנוהלים על ידי קבוצה של אנליסטים עסקיים או כמה שאילתות אד-הוק שמנוהלות על ידי קבוצה של מדעני נתונים.
שימוש ב Google Cloud מחשבון העלויות
שיטה מומלצת: כדאי להשתמש בGoogle Cloud מחשבון התמחור כדי ליצור הערכת עלות חודשית כוללת ל-BigQuery על סמך השימוש החזוי. לאחר מכן תוכלו להשוות את האומדן הזה לעלויות בפועל כדי לזהות תחומים שבהם אפשר לבצע אופטימיזציה.
על פי דרישה
כדי להעריך את העלויות בGoogle Cloud מחשבון התמחור כשמשתמשים במודל התמחור על פי דרישה, פועלים לפי השלבים הבאים:
- פותחים את Google Cloud מחשבון התמחור.
- לוחצים על הוספה לאומדן.
- בוחרים באפשרות BigQuery.
- בקטע סוג השירות, בוחרים באפשרות 'על פי דרישה'.
- בוחרים את המיקום שבו השאילתות יפעלו.
- בשדה כמות הנתונים בשאילתה, מזינים את הערך המשוער בבייטים שנקראו מהרצת הניסיון או מהכלי לתיקוף שאילתות.
- מזינים את ההערכות שלכם לגבי נפח האחסון הנדרש עבור Active storage, Long-term storage, Streaming inserts ו-Streaming reads. צריך להעריך רק את האחסון הפיזי או את האחסון הלוגי, בהתאם למודל החיוב של אחסון מערך הנתונים.
- האומדן מופיע בחלונית Cost details. כדי לקבל מידע נוסף על העלות המשוערת, לוחצים על פתיחת תצוגה מפורטת. אפשר גם להוריד ולשתף את הערכת העלויות.
מידע נוסף זמין במאמר בנושא תמחור על פי דרישה.
מהדורות
כדי להעריך את העלויות בGoogle Cloud מחשבון התמחור כשמשתמשים במודל התמחור לפי קיבולת עם מהדורות BigQuery, פועלים לפי השלבים הבאים:
- פותחים את Google Cloud מחשבון התמחור.
- לוחצים על הוספה לאומדן.
- בוחרים באפשרות BigQuery.
- בקטע סוג השירות, בוחרים באפשרות 'מהדורות'.
- בוחרים את המיקום שבו רוצים להשתמש במשבצות.
- בוחרים מהדורה.
- בוחרים את מספר המקסימלי של משבצות, מספר משבצות הבסיס, את ההתחייבות (אופציונלי) ואת הניצול המשוער של ההתאמה האוטומטית לעומס.
- בוחרים את המיקום שבו הנתונים מאוחסנים.
- מזינים את ההערכות שלכם לגבי נפח האחסון הנדרש עבור Active storage, Long-term storage, Streaming inserts ו-Streaming reads. צריך להעריך רק את האחסון הפיזי או את האחסון הלוגי, בהתאם למודל החיוב של אחסון מערך הנתונים.
- האומדן מופיע בחלונית Cost details. כדי לקבל מידע נוסף על העלות המשוערת, לוחצים על פתיחת תצוגה מפורטת. אפשר גם להוריד ולשתף את הערכת העלויות.
מידע נוסף זמין במאמר תמחור לפי נפח.
שימוש בהזמנות ובחיובים מראש
שיטה מומלצת: כדאי להשתמש בהזמנות וב-CUD ב-BigQuery כדי לשלוט בעלויות.
מידע נוסף מופיע במאמר בנושא הגבלת העלויות לכל מודל תמחור.
שימוש בכלי להערכת יחידות קיבולת
שיטה מומלצת: כדאי להשתמש בכלי להערכת משבצות כדי להעריך את מספר המשבצות שנדרשות לעומסי העבודה.
הכלי להערכת יחידות הקיבולת של BigQuery עוזר לנהל את יחידות הקיבולת (Slot) על סמך היסטוריית הביצועים.
בנוסף, לקוחות שמשתמשים במודל התמחור על פי דרישה יכולים לראות המלצות לגבי גודל ההתחייבויות וההזמנות של התאמה אוטומטית לעומס, עם ביצועים דומים, כשהם עוברים לתמחור על בסיס קיבולת.
ביטול עבודות מיותרות לטווח ארוך
כדי לפנות קיבולת, בודקים את העבודות שפועלות במשך זמן רב כדי לוודא שהן צריכות להמשיך לפעול. אם לא, מבטלים את המינוי.
צפייה בעלויות באמצעות מרכז בקרה
שיטה מומלצת: כדאי ליצור מרכז בקרה לניתוח נתוני החיוב ב-Cloud כדי לעקוב אחרי השימוש ב-BigQuery ולבצע בו שינויים.
אתם יכולים לייצא את נתוני החיוב ל-BigQuery ולהציג אותם בתצוגה חזותית בכלים כמו Looker Studio. מדריך ליצירת לוח בקרה לחיוב זמין במאמר הדמיה Google Cloud של נתוני החיוב באמצעות BigQuery ו-Looker Studio.
שימוש בתקציבים ובהתראות לחיוב
שיטה מומלצת: כדאי להשתמש בתקציבים בחיוב ב-Cloud כדי לעקוב אחרי החיובים ב-BigQuery במקום אחד.
התקציבים בחיוב ב-Cloud מאפשרים לעקוב אחרי העלויות בפועל בהשוואה לעלויות המתוכננות. אחרי בחירת הסכום לתקציב, צריך להגדיר את כללי הסף להתראות לגבי התקציב. הכללים האלה יגרמו לשליחת ההתראות באימייל. בעזרת ההתראות באימייל תוכלו לעקוב אחרי ניצול התקציב ב-BigQuery.
שליטה בעלויות האחסון
כדאי ליישם את השיטות המומלצות הבאות כדי לייעל את העלות של אחסון ב-BigQuery. אפשר גם לבצע אופטימיזציה של האחסון לביצועי שאילתות.
שימוש באחסון לטווח ארוך
שיטה מומלצת: כדי להפחית את העלות של נתונים ישנים, כדאי להשתמש בתמחור לאחסון לטווח ארוך.
כשאתם טוענים נתונים לאחסון ב-BigQuery, הנתונים כפופים לתמחור האחסון ב-BigQuery. לגבי נתונים ישנים יותר, אתם יכולים ליהנות אוטומטית מתמחור אחסון לטווח ארוך ב-BigQuery.
אם יש לכם טבלה שלא משתנה במשך 90 ימים רצופים, מחיר האחסון של הטבלה הזו יורד אוטומטית ב-50%. אם יש לכם טבלה עם מחיצות, כל מחיצה נבדקת בנפרד כדי לקבוע אם היא עומדת בדרישות לתמחור לטווח ארוך, בהתאם לאותם כללים שחלים על טבלאות ללא מחיצות.
הגדרת מודל החיוב של האחסון
שיטה מומלצת: כדאי לבצע אופטימיזציה של מודל החיוב על אחסון בהתאם לדפוסי השימוש.
BigQuery תומך בחיוב על אחסון באמצעות בייטים לוגיים (לא דחוסים) או פיזיים (דחוסים), או שילוב של שניהם. מודל החיוב על אחסון שמוגדר לכל מערך נתונים קובע את התמחור של האחסון, אבל הוא לא משפיע על ביצועי השאילתות.
אתם יכולים להשתמש בתצוגות INFORMATION_SCHEMA כדי לקבוע את מודל החיוב על נפח האחסון שהכי מתאים לכם על סמך דפוסי השימוש.
הימנעו מדריסת טבלאות
שיטה מומלצת: כשמשתמשים במודל החיוב של אחסון פיזי, מומלץ להימנע מכתיבה חוזרת של טבלאות.
כשמחליפים טבלה, למשל באמצעות הפרמטר --replace בעבודות טעינה באצווה או באמצעות הצהרת ה-SQL TRUNCATE TABLE, הנתונים שהוחלפו נשמרים למשך הזמן של חלונות הנסיעה בזמן וההגנה מפני כשלים.
אם אתם מחליפים טבלה לעיתים קרובות, תחויבו בעלויות אחסון נוספות.
במקום זאת, אפשר לטעון נתונים לטבלה באופן מצטבר באמצעות הפרמטר WRITE_APPEND במשימות טעינה, באמצעות הצהרת ה-SQL MERGE או באמצעות Storage Write API.
הקטנת החלון של האפשרות לחזור אחורה בזמן
שיטה מומלצת: בהתאם לדרישות שלכם, אתם יכולים לקצר את חלון הזמן של הנסיעה בזמן.
הקטנת חלון החזרה בזמן מערך ברירת המחדל של שבעה ימים מקטינה את תקופת השמירה של נתונים שנמחקו מטבלה או שונו בה. החיוב על אחסון של נסיעה בזמן מתבצע רק כשמשתמשים במודל החיוב על אחסון הפיזי (דחוס).
חלון הזמן של הנסיעה אחורה בזמן מוגדר ברמת מערך הנתונים. אפשר גם להגדיר את חלון הזמן שמוגדר כברירת מחדל לשינוי נתונים לאחור עבור מערכי נתונים חדשים באמצעות הגדרות התצורה.
שימוש בתפוגה של טבלאות לטבלאות יעד
שיטה מומלצת: אם אתם כותבים תוצאות של שאילתות גדולות לטבלת יעד, כדאי להשתמש בזמן התפוגה שמוגדר כברירת מחדל לטבלה כדי להסיר את הנתונים כשאין בהם יותר צורך.
יש עלות לאחסון של קבוצות גדולות של תוצאות ב-BigQuery. אם אתם לא צריכים גישה קבועה לתוצאות, אתם יכולים להשתמש בתפוגה של טבלה שמוגדרת כברירת מחדל כדי שהנתונים יימחקו אוטומטית.
העברת נתונים לארכיון ב-Cloud Storage
שיטה מומלצת: כדאי לשקול לארכב נתונים ב-Cloud Storage.
אתם יכולים להעביר נתונים מ-BigQuery ל-Cloud Storage בהתאם לצורך העסקי בארכיון. מומלץ לבדוק את תמחור האחסון לטווח ארוך ואת מודל החיוב של האחסון הפיזי לפני ייצוא נתונים מ-BigQuery.
פתרון בעיות שקשורות להבדלים בעלויות ולחיובים לא צפויים ב-BigQuery
כדי לפתור בעיות שקשורות לחיובים לא צפויים ב-BigQuery או להבדלים בעלויות, פועלים לפי השלבים הבאים:
כדי להבין מאיפה מגיעים החיובים על BigQuery כשמעיינים בדוח החיוב ב-Cloud, ההמלצה הראשונה היא לקבץ את החיובים לפי מק"ט, כדי שיהיה קל יותר לראות את השימוש ואת החיובים על שירותי BigQuery המתאימים.
לאחר מכן, כדאי לעיין בתמחור של המק"טים המתאימים בדף התיעוד של המק"ט או בדף
Pricingבממשק המשתמש של החיוב ב-Cloud, כדי להבין איזו תכונה היא, למשל, BigQuery Storage Read API, אחסון לטווח ארוך, תמחור על פי דרישה, מהדורת Standard.אחרי שמזהים את המק"טים המתאימים, משתמשים בתצוגות המפורטות
INFORMATION_SCHEMAכדי לזהות את המשאבים הספציפיים שמשויכים לחיובים האלה, למשל:- אם אתם מחויבים על ניתוח על פי דרישה, כדאי לעיין בדוגמאות לתצוגה של
INFORMATION_SCHEMA.JOBSכדי לזהות את המשימות שמייצרות עלויות ואת המשתמשים שהפעילו אותן. - אם מחויבים על מק"טים של הזמנות או התחייבויות, כדאי לבדוק את התצוגות המתאימות
INFORMATION_SCHEMA.RESERVATIONSו-INFORMATION_SCHEMA.CAPACITY_COMMITMENTSכדי לזהות את ההזמנות וההתחייבויות שמחויבות. - אם החיובים הם על מק"טים של אחסון, כדאי לעיין ב
INFORMATION_SCHEMA.TABLE_STORAGEדוגמאות לתצוגה כדי להבין אילו מערכי נתונים וטבלאות מייצרים יותר עלויות.
- אם אתם מחויבים על ניתוח על פי דרישה, כדאי לעיין בדוגמאות לתצוגה של
שיקולים חשובים לפתרון בעיות:
חשוב לזכור שתקופת הזמן באפשרות Daily בדוח החיוב ב-Cloud מתחילה בחצות לפי שעון החוף המערבי בארה"ב ובקנדה (UTC-8), ומשתנה בהתאם לשעון הקיץ בארצות הברית. לכן, צריך להתאים את החישובים ואת צבירת הנתונים כך שיתאימו לאותן מסגרות זמן.
אם יש כמה פרויקטים שמקושרים לחשבון לחיוב ואתם רוצים לבדוק חיובים מפרויקט ספציפי, אתם יכולים לסנן לפי פרויקט.
חשוב לבחור את האזור הנכון כשמבצעים חקירות.
הפרויקט שלך חרג מהמכסה של בייטים בחינם שנסרקו בשאילתות
השגיאה הזו מוחזרת מ-BigQuery כשמריצים שאילתה בתוכנית ללא תשלום והחשבון מגיע למגבלת השאילתות החודשית. מידע נוסף על תמחור שאילתות מופיע במאמר בנושא תוכנית שימוש בחינם.
הודעת השגיאה
Your project exceeded quota for free query bytes scanned
רזולוציה
כדי להמשיך להשתמש ב-BigQuery, צריך לשדרג את החשבון לחשבון בתשלום לחיוב ב-Cloud.
חיובים לא צפויים שקשורים לשאילתות, להזמנות ולהתחייבויות
פתרון בעיות שקשורות לחיובים לא צפויים על הפעלת משימות תלוי במקור של החיובים האלה:
- אם אתם רואים עלייה בעלויות של ניתוח על פי דרישה, יכול להיות שהיא קשורה לעלייה במספר המשימות שהופעלו או לשינוי בכמות הנתונים שצריך לעבד במשימות. כדאי לבדוק את זה באמצעות התצוגה
INFORMATION_SCHEMA.JOBS. - אם יש עלייה בחיובים על משבצות שהתחייבתם להן, כדאי לבדוק את זה באמצעות שאילתה של
INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGESכדי לראות אם נרכשו או שונו התחייבויות חדשות. - כדי לבדוק אם חל גידול בחיובים כתוצאה משימוש בהזמנות, צריך לבדוק את השינויים בהזמנות שמתועדים ב-
INFORMATION_SCHEMA.RESERVATION_CHANGES. כדי להתאים בין השימוש בהזמנה של התאמה אוטומטית לעומס לבין נתוני החיוב, פועלים לפי הדוגמה של התאמה אוטומטית לעומס.
החיוב על שעות השימוש במשבצת גדול יותר מהחישוב של שעות השימוש במשבצת בתצוגה INFORMATION_SCHEMA.JOBS
כשמשתמשים בהזמנה עם שינוי גודל אוטומטי, החיוב מחושב לפי מספר המשבצות שהוגדלו, ולא לפי מספר המשבצות שהיו בשימוש. ההתאמה האוטומטית של BigQuery לעומס מתבצעת במרווחים של 50 משבצות, ולכן החיוב הוא על הכמות הקרובה ביותר למכפלה של 50, גם אם בפועל נעשה שימוש בכמות קטנה יותר. למידרוג האוטומטי יש תקופה מינימלית של דקה אחת לפני הקטנת הקיבולת, מה שאומר שייגבה תשלום על דקה אחת לפחות, גם אם השאילתה השתמשה במשבצות לזמן קצר יותר, למשל ל-10 שניות בלבד מתוך הדקה. הדרך הנכונה לאמוד את העלויות של הזמנה עם התאמה אוטומטית לעומס מתועדת בדף בנושא התאמה אוטומטית לעומס של משבצות. מידע נוסף על שימוש יעיל בהתאמה אוטומטית לעומס זמין במאמר בנושא שיטות מומלצות לשימוש בהתאמה אוטומטית לעומס.
תרחיש דומה יתרחש בהזמנות שלא מוגדרות בהן אפשרויות של שינוי גודל אוטומטי – החיוב מחושב לפי מספר המשבצות שהוקצו, ולא לפי מספר המשבצות שבשימוש. אם רוצים להעריך את החיובים על הזמנה שלא מתבצעת בה הגדלה אוטומטית של הקיבולת, אפשר לשלוח שאילתה ישירות לתצוגה RESERVATIONS_TIMELINE.
החיוב נמוך מסך הבייטים שחויבו, שחושב באמצעות INFORMATION_SCHEMA.JOBS עבור פרויקט שמריץ שאילתות לפי דרישה
יכולות להיות כמה סיבות לכך שהחיוב בפועל יהיה נמוך יותר ממספר הבייטים המחושב שעברו עיבוד:
- לכל פרויקט מוקצה נפח של 1TB של שאילתות בתוכנית ללא תשלום בכל חודש, ללא עלות נוספת.
- משימות מסוג
SCRIPTלא נכללו בחישוב, ולכן יכול להיות שחלק מהערכים נספרו פעמיים. - סוגים שונים של חיסכון שחלים על החשבון לחיוב ב-Cloud, כמו הנחות מוסכמות, קרדיטים שיווקיים ועוד. מעיינים בקטע 'חיסכון' בדוח החיוב ב-Cloud. התוכנית ללא תשלום כוללת גם 1TB של שאילתות לחודש.
החיוב גבוה יותר ממספר הבייטים שעברו עיבוד, כפי שמחושב באמצעות INFORMATION_SCHEMA.JOBS עבור פרויקט שבו מופעלות שאילתות לפי דרישה
אם סכום החיוב גבוה מהערך שחישבתם באמצעות שאילתה בתצוגה המפורטת INFORMATION_SCHEMA.JOBS, יכול להיות שזה קרה בגלל תנאים מסוימים:
שאילתות על טבלאות עם אבטחה ברמת השורה
- שאילתות על טבלאות עם אבטחה ברמת השורה לא יוצרות ערך עבור
total_bytes_billedבתצוגהINFORMATION_SCHEMA.JOBS, ולכן החיוב שמחושב באמצעותtotal_bytes_billedמהתצוגהINFORMATION_SCHEMA.JOBSיהיה נמוך מהערך שחויב. מידע נוסף על הסיבות לכך שהמידע הזה לא מוצג זמין בדף שיטות מומלצות לאבטחה ברמת השורה.
- שאילתות על טבלאות עם אבטחה ברמת השורה לא יוצרות ערך עבור
ביצוע פעולות של למידת מכונה ב-BigQuery
- התמחור של BigQuery ML לשאילתות על פי דרישה תלוי בסוג המודל שנוצר. חלק מהפעולות של המודלים האלה מחויבות בשיעור גבוה יותר משאילתות שאינן שאילתות ML. לכן, אם פשוט תסכמו את כל הערכים של
total_billed_bytesבפרויקט ותשתמשו בתמחור הרגיל לפי דרישה לכל TB, לא תקבלו את התמחור הנכון – צריך להביא בחשבון את ההבדל בתמחור לכל TB.
- התמחור של BigQuery ML לשאילתות על פי דרישה תלוי בסוג המודל שנוצר. חלק מהפעולות של המודלים האלה מחויבות בשיעור גבוה יותר משאילתות שאינן שאילתות ML. לכן, אם פשוט תסכמו את כל הערכים של
סכומי מחירים שגויים
- מוודאים שערכי התמחור הנכונים לכל TB משמשים בחישובים – חשוב לבחור את האזור הנכון כי המחירים תלויים במיקום. לעיון במאמרי העזרה בנושא תמחור
ההמלצה הכללית היא לפעול לפי הדרך המומלצת לחישוב השימוש במשימות על פי דרישה לצורך חיוב, שמוסברת במסמכי העזרה הציבוריים שלנו.
חויבתי על שימוש ב-BigQuery Reservations API למרות שממשק ה-API מושבת ולא נעשה שימוש בהזמנות או בהתחייבויות
כדאי לבדוק את ה-SKU כדי להבין טוב יותר על אילו שירותים מחויבים. אם המק"ט שחויב הוא BigQuery Governance SKU – אלה חיובים שמגיעים מ-Dataplex Universal Catalog.
חלק מהפונקציות של Dataplex Universal Catalog מפעילות ביצוע של משימות באמצעות BigQuery. החיובים האלה מעובדים עכשיו במסגרת המק"ט המתאים של BigQuery Reservations API. פרטים נוספים מופיעים במאמר תמחור של Dataplex Universal Catalog.
הפרויקט משויך להזמנה, אבל עדיין רואים עלויות של ניתוח לפי דרישה ב-BigQuery
כדאי לעיין בקטע פתרון בעיות שקשורות להזמנות כדי לזהות מאיפה מגיעים החיובים של Analysis.
חיובים לא צפויים על משבצות בתשלום לפי שימוש (PAYG) במהדורת BigQuery Standard
בדוח החיוב ב-Cloud, מחילים מסנן עם התווית goog-bq-feature-type והערך BQ_STUDIO_NOTEBOOK. השימוש שיוצג לכם נמדד כחריגה ממכסת הקיבולת בתשלום לפי שימוש במסגרת מהדורת BigQuery Standard. אלה חיובים על שימוש במחברת BigQuery Studio. מידע נוסף על התמחור של מחברות ב-BigQuery Studio
חיובים לא צפויים על משבצות לפי שימוש (PAYG) במהדורת BigQuery Enterprise
בדוח החיוב ב-Cloud, מחילים מסנן עם התווית goog-bq-feature-type והערך SPARK_PROCEDURE. השימוש שיוצג לכם נמדד כמשבצות בתשלום לפי שימוש במסגרת BigQuery Enterprise edition. אלה חיובים על שימוש בפרוצדורות של BigQuery Apache Spark, שמחויבות כך ללא קשר למודל החישוב שבו נעשה שימוש בפרויקט.
חיובים על BigQuery Reservations API שמופיעים אחרי השבתה של Reservation API
השבתה של BigQuery לא תפסיק את החיובים על ההתחייבות. כדי להפסיק את החיובים על התחייבות, צריך למחוק את ההתחייבות. מגדירים את תוכנית החידוש לNONE, וההתחייבות תימחק אוטומטית כשהתוקף שלה יפוג.
שאילתות על טבלאות קטנות מאוד גורמות לעלויות גבוהות באופן לא פרופורציונלי בחיוב על פי דרישה
החיוב המינימלי על 'נתונים מעובדים לכל טבלה שמפנים אליה' בשאילתת BigQuery הוא 10MiB, ללא קשר לגודל הטבלה בפועל. באופן דומה, כמות הנתונים המינימלית לחיוב שעובדה לכל שאילתה היא 10MiB. כשמריצים שאילתה בטבלאות קטנות, אפילו בטבלה בגודל KB, החיוב הוא לפחות 10MiB לכל שאילתה. כתוצאה מכך, החיובים יכולים להיות גבוהים בהרבה מההערכות שלכם לחיוב על פי דרישה, והם יקרים במיוחד בתמחור של מחשוב על פי דרישה.
חיובים לא צפויים על אחסון
תרחישים שעלולים להוביל לעלייה בעלויות האחסון:
- עלייה בכמות הנתונים שמאוחסנים בטבלאות – אפשר להשתמש בתצוגה
INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINEכדי לעקוב אחרי השינוי בבייט של הטבלאות - שינוי מודלים של חיוב על מערכי נתונים
- הגדלת חלון הזמן של נסיעה אחורה בזמן לקבוצות נתונים של מודל חיוב פיזי
- שינוי של טבלאות עם נתונים באחסון לטווח ארוך, שגורם להן להפוך לאחסון פעיל
מחיקה של טבלאות או מערכי נתונים הובילה לעלויות אחסון גבוהות יותר ב-BigQuery
התכונה 'מסע בזמן' ב-BigQuery שומרת את הנתונים שנמחקו למשך חלון הזמן שמוגדר למסע בזמן, ועוד 7 ימים נוספים לצורך שחזור במקרה של כשל. במהלך חלון השמירה הזה, הנתונים שנמחקו במערכי נתונים של מודל חיוב לאחסון פיזי תורמים לעלות האחסון הפיזי הפעיל, גם אם הטבלאות לא יופיעו יותר ב-INFORMATION_SCHEMA.TABLE_STORAGE או במסוף. אם נתוני הטבלה היו באחסון לטווח ארוך, המחיקה גורמת להעברת הנתונים לאחסון פיזי פעיל. כתוצאה מכך, העלות המתאימה עולה, כי על בייטים פיזיים פעילים מחויבים בערך פי 2 יותר מאשר על בייטים פיזיים לטווח ארוך, לפי דף התמחור של אחסון ב-BigQuery. הגישה המומלצת לצמצום העלויות שנובעות ממחיקת נתונים במערכי נתונים של מודל החיוב על אחסון פיזי היא לצמצם את חלון הזמן של 'חזרה בזמן' ליומיים.
העלויות של האחסון יורדות בלי שצריך לבצע שינויים בנתונים
ב-BigQuery, משלמים על אחסון פעיל ואחסון לטווח ארוך. חיובים על אחסון פעיל כוללים כל טבלה או מחיצה בטבלה שלא בוצעו בהן שינויים במשך 90 ימים רצופים, בעוד שחיובים על אחסון לטווח ארוך כוללים טבלאות ומחיצות שלא בוצעו בהן שינויים במשך 90 ימים רצופים. אפשר לראות ירידה בעלות האחסון הכוללת כשנתונים עוברים לאחסון לטווח ארוך, שהוא זול בכ-50% מאחסון פעיל. פרטים נוספים מופיעים במאמר בנושא תמחור של נפח אחסון.
חישובי האחסון ב-INFORMATION_SCHEMA לא תואמים לחיוב
- מומלץ להשתמש ב
INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINEבמקום בINFORMATION_SCHEMA.TABLE_STORAGE–TABLE_STORAGE_USAGE_TIMELINEמספק נתונים מדויקים ומפורטים יותר לחישוב נכון של עלויות האחסון - השאילתות שמופעלות בתצוגות המפורטות לא כוללות מיסים, התאמות ושגיאות עיגול – צריך לקחת את הנתונים האלה בחשבון כשמשווים את הנתונים.
INFORMATION_SCHEMAבהמשך הדף הזה יש מידע נוסף על דוחות בחיוב ב-Cloud. - הנתונים שמוצגים בתצוגות
INFORMATION_SCHEMAהם ב-UTC, ואילו הנתונים בדוח החיוב הם לפי שעון החוף המערבי בארה"ב ובקנדה (UTC-8).
המאמרים הבאים
- מידע נוסף על התמחור של BigQuery
- איך מבצעים אופטימיזציה של שאילתות
- איך מבצעים אופטימיזציה של האחסון
כדי לקבל מידע על חיוב, התראות והצגת נתונים, אפשר לעיין בנושאים הבאים: