התצוגה TABLE_STORAGE
התצוגה INFORMATION_SCHEMA.TABLE_STORAGE מספקת תמונת מצב עדכנית של נפח האחסון בשימוש בטבלאות ובתצוגות המהותיות. כששולחים שאילתה לתצוגה INFORMATION_SCHEMA.TABLE_STORAGE, תוצאות השאילתה מכילות שורה אחת לכל טבלה או תצוגה מהותית בפרויקט הנוכחי.
הנתונים בתצוגה INFORMATION_SCHEMA.TABLE_STORAGE לא נשמרים בזמן אמת, והעדכונים בדרך כלל מתעכבים בכמה שניות עד כמה דקות. שינויים באחסון שנגרמים רק בגלל תפוגה של מחיצה או טבלה, או בגלל שינויים בחלון הנסיעה בזמן של מערך הנתונים, עשויים להופיע בתצוגה INFORMATION_SCHEMA.TABLE_STORAGE רק אחרי יום.
אם מוחקים מערך נתונים שמכיל יותר מ-1,000 טבלאות, השינוי לא יופיע בתצוגה הזו עד שיעבור חלון הזמן של הנסיעה בזמן של מערך הנתונים שנמחק.
תצוגות האחסון של הטבלאות מאפשרות לכם לראות בצורה נוחה את צריכת נפח האחסון הנוכחית, וגם מספקות פרטים על סוג הבייטים שבהם נעשה שימוש באחסון: בייטים לוגיים לא דחוסים, בייטים פיזיים דחוסים או בייטים של Time Travel. המידע הזה יכול לעזור לכם במשימות כמו תכנון צמיחה עתידית והבנת דפוסי העדכון של הטבלאות.
הנתונים שכלולים בעמודות של *_BYTES
העמודות *_BYTES בתצוגות האחסון של הטבלה כוללות מידע על השימוש שלכם בבייטים של אחסון. המידע הזה נקבע על סמך נפח האחסון שאתם משתמשים בו לתצוגות מהותיות ולסוגי הטבלאות הבאים:
- טבלאות קבועות שנוצרו באמצעות אחת מהשיטות שמתוארות במאמר יצירת טבלאות ושימוש בהן.
- טבלאות זמניות שנוצרו בסשנים. הטבלאות האלה ממוקמות בקבוצות נתונים עם שמות שנוצרים באופן אוטומטי, כמו "_c018003e063d09570001ef33ae401fad6ab92a6a".
- טבלאות זמניות שנוצרו בשאילתות עם כמה הצהרות ("סקריפטים"). הטבלאות האלה ממוקמות במערכי נתונים עם שמות שנוצרו, כמו "_script72280c173c88442c3a7200183a50eeeaa4073719".
נתונים שמאוחסנים במטמון של תוצאות השאילתות לא מחויבים, ולכן הם לא נכללים בערכים של העמודה *_BYTES.
בשיבוטים ובתמונות מצב, ערכי העמודה *_BYTES מוצגים כאילו הם טבלאות שלמות, ולא הדלתא מהאחסון שמשמש את מסד הנתונים הטבלאי, ולכן הם הערכת יתר. החיוב שלכם משקף את ההפרש הזה בנפח אחסון נדרש שבשימוש. למידע נוסף על בייטים של דלתא שמאוחסנים ומחויבים על ידי שיבוטים ותמונות מצב, ראו התצוגה TABLE_STORAGE_USAGE_TIMELINE.
חיזוי החיוב על האחסון
כדי לחזות את החיוב החודשי על אחסון של קבוצת נתונים, אתם יכולים להשתמש בעמודה logical או בעמודה physical *_BYTES בתצוגה הזו, בהתאם למודל החיוב על אחסון של קבוצת נתונים שמוגדר בקבוצת הנתונים. חשוב לזכור שזו רק תחזית משוערת, וסכומי החיוב המדויקים מחושבים על סמך השימוש בתשתית החיוב של האחסון ב-BigQuery ומוצגים בחיוב ב-Cloud.
במערכי נתונים שמשתמשים במודל חיוב לוגי, אפשר לחזות את עלויות האחסון החודשיות באופן הבא:
((ACTIVE_LOGICAL_BYTES value / POW(1024, 3)) * active logical bytes pricing) +
((LONG_TERM_LOGICAL_BYTES value / POW(1024, 3)) * long-term logical bytes pricing)
הערך ACTIVE_LOGICAL_BYTES של טבלה משקף את הבייטים הפעילים שמשמשים כרגע את הטבלה.
במערכי נתונים שמשתמשים במודל חיוב פיזי, אפשר לחזות את עלויות האחסון באופן הבא:
((ACTIVE_PHYSICAL_BYTES + FAIL_SAFE_PHYSICAL_BYTES value / POW(1024, 3)) * active physical bytes pricing) +
((LONG_TERM_PHYSICAL_BYTES value / POW(1024, 3)) * long-term physical bytes pricing)
הערך ACTIVE_PHYSICAL_BYTES של טבלה משקף את הבייטים הפעילים שמשמשים כרגע את הטבלה, בתוספת הבייטים שמשמשים ל-Time Travel בטבלה.
כדי לראות את הבייטים הפעילים של הטבלה בלבד, מחסירים את הערך של TIME_TRAVEL_PHYSICAL_BYTES מהערך של ACTIVE_PHYSICAL_BYTES.
מידע נוסף זמין במאמר תמחור של אחסון.
הסבר על ערכי בייטים לעומת יחידות חיוב
העמודות *_BYTES בתצוגות INFORMATION_SCHEMA.TABLE_STORAGE מספקות תמונת מצב של צריכת האחסון הנוכחית בבייטים. כך תוכלו לדעת כמה נתונים אתם מאחסנים באותו רגע.
עם זאת, החיוב על אחסון ב-BigQuery, כפי שמוצג בדוחות החיוב ב-Cloud, לא מבוסס רק על הגודל המיידי הזה. במקום זאת, החיוב מחושב לפי כמות הנתונים שמאוחסנים לאורך זמן. יחידות החיוב הרגילות הן GiB לחודש או TiB לחודש.
לדוגמה, אחסון של 1GiB למשך חודש קלנדרי מלא נחשב לשימוש של 1GiB לחודש, גם אם בחודש יש 28 ימים וגם אם יש בו 31 ימים. באופן דומה, אחסון נתונים רק בחלק מהחודש מחושב באופן יחסי. אחסון של 31 GiB ליום אחד בחודש של 31 ימים הוא בערך 1 GiB לחודש, בדיוק כמו שאחסון של 28 GiB ליום אחד בחודש של 28 ימים הוא בערך 1 GiB לחודש.
ערכי הבייטים ב-INFORMATION_SCHEMA.TABLE_STORAGE הם קלטים חיוניים להערכת העלויות הפוטנציאליות, אבל החיוב בפועל משקף את החישוב המתמשך של (bytes stored * duration stored). הערכים בתצוגה הזו לא אמורים להתאים ישירות לפריטים בדוח החיוב, שנצברים במהלך תקופת החיוב.
לפרטים מקיפים על אופן החישוב של עלויות האחסון, ראו את הדף מחירי האחסון.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לשליחת שאילתות לתצוגה INFORMATION_SCHEMA.TABLE_STORAGE, צריך לבקש מהאדמין להקצות לכם את התפקיד BigQuery Metadata Viewer (roles/bigquery.metadataViewer) ב-IAM בפרויקט.
להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות כדי לשלוח שאילתות לתצוגה INFORMATION_SCHEMA.TABLE_STORAGE. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לשלוח שאילתות לתצוגה INFORMATION_SCHEMA.TABLE_STORAGE, נדרשות ההרשאות הבאות:
-
bigquery.tables.get -
bigquery.tables.list
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
סכימה
הסכימה של התצוגה INFORMATION_SCHEMA.TABLE_STORAGE היא:
| שם העמודה | סוג נתונים | ערך |
|---|---|---|
project_id |
STRING |
מזהה הפרויקט שמכיל את מערך הנתונים. |
project_number |
INT64 |
מספר הפרויקט שמכיל את מערך הנתונים. |
table_catalog |
STRING |
מזהה הפרויקט שמכיל את מערך הנתונים. |
table_schema |
STRING |
שם מערך הנתונים שמכיל את הטבלה או את התצוגה המהותית, שנקרא גם datasetId. |
table_name |
STRING |
שם הטבלה או התצוגה המהותית, שנקרא גם tableId. |
creation_time |
TIMESTAMP |
מועד היצירה של הטבלה. |
total_rows |
INT64 |
מספר השורות הכולל בטבלה או בתצוגה המהותית. |
total_partitions |
INT64 |
מספר המחיצות שקיימות בטבלה או בתצוגה המהותית. בטבלאות ללא מחיצות מוחזר הערך 0. |
total_logical_bytes |
INT64 |
מספר הבייטים הלוגיים (לא דחוסים) הכולל בטבלה או בתצוגה המהותית. |
active_logical_bytes |
INT64 |
מספר הבייטים הלוגיים (לא דחוסים) שנוצרו לפני פחות מ-90 יום. |
long_term_logical_bytes |
INT64 |
מספר הבייטים הלוגיים (לא דחוסים) שנוצרו לפני יותר מ-90 ימים. |
current_physical_bytes |
INT64 |
מספר הבייטים הפיזיים הכולל של האחסון הנוכחי של הטבלה בכל המחיצות. |
total_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (הדחוסים) הכולל שמשמשים לאחסון, כולל בייטים פעילים, לטווח ארוך ושל Time Travel (נתונים שנמחקו או שונו). הבייטים של Fail-safe (נתונים שנמחקו או שונו ונשמרו אחרי חלון הזמן של Time Travel) לא נכללים. |
active_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (הדחוסים) שנוצרו לפני פחות מ-90 יום, כולל בייטים של נסיעה בזמן (נתונים שנמחקו או שונו). |
long_term_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (הדחוסים) שנוצרו לפני יותר מ-90 ימים. |
time_travel_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (הדחוסים) שמשמשים לאחסון של נתונים שנמחקו או שונו. |
storage_last_modified_time |
TIMESTAMP |
הפעם האחרונה שבה נכתבו נתונים בטבלה. הפונקציה מחזירה את הערך
NULL אם אין נתונים. |
deleted |
BOOLEAN |
מציין אם הטבלה נמחקה או לא. |
table_type |
STRING |
סוג הטבלה. לדוגמה, BASE TABLE.
|
managed_table_type |
STRING |
העמודה הזו נמצאת בגרסת טרום-השקה (Preview). סוג הניהול של הטבלה. לדוגמה,
NATIVE או BIGLAKE.
|
fail_safe_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (הדחוסים) שמשמשים את האחסון למקרה של כשל (נתונים שנמחקו או שונו). |
last_metadata_index_refresh_time |
TIMESTAMP |
המועד האחרון שבו עודכן אינדקס המטא-נתונים של הטבלה. |
table_deletion_reason |
STRING |
הסיבה למחיקת הטבלה אם השדה deleted הוא TRUE. הערכים האפשריים הם:
|
table_deletion_time |
TIMESTAMP |
זמן המחיקה של הטבלה. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע במקום להשתמש בתו כללי לחיפוש (SELECT *). ציון מפורש של העמודות מונע את קריסת השאילתות אם הסכימה הבסיסית משתנה.
היקף ותחביר
שאילתות בתצוגה הזו חייבות לכלול מזהה אזור. בטבלה הבאה מוסבר היקף האזור של התצוגה הזו:
| שם התצוגה המפורטת | היקף המשאבים | היקף האזור |
|---|---|---|
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE[_BY_PROJECT] |
רמת הפרויקט | REGION |
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud (אופציונלי). אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: כל שם של אזור של מערך נתונים. לדוגמה,`region-us`.
בדוגמה הבאה אפשר לראות איך להחזיר מידע על האחסון של טבלאות בפרויקט ובאזור מסוימים:
SELECT * FROM `myProject`.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
הדוגמה הבאה מראה איך להחזיר מידע על נפח האחסון של טבלאות בפרויקט הנוכחי באזור מסוים:
SELECT * FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT;
דוגמאות
דוגמה 1:
בדוגמה הבאה מוצג המספר הכולל של בייטים לוגיים שחויבו בפרויקט הנוכחי.
SELECT SUM(total_logical_bytes) AS total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
התוצאה אמורה להיראות כך:
+---------------------+ | total_logical_bytes | +---------------------+ | 971329178274633 | +---------------------+
דוגמה 2:
בדוגמה הבאה מוצגים בייטים שונים של אחסון ב-GiB ברמת מערכי הנתונים של הפרויקט הנוכחי.
SELECT table_schema AS dataset_name, -- Logical SUM(total_logical_bytes) / power(1024, 3) AS total_logical_gib, SUM(active_logical_bytes) / power(1024, 3) AS active_logical_gib, SUM(long_term_logical_bytes) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(total_physical_bytes) / power(1024, 3) AS total_physical_gib, SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE WHERE table_type ='BASE TABLE' GROUP BY table_schema ORDER BY dataset_name
דוגמה 3:
בדוגמה הבאה מוסבר איך לחזות את ההפרש במחיר לכל קבוצת נתונים בין מודלים של חיוב לוגי ופיזי ב-30 הימים הבאים. בדוגמה הזו, ההנחה היא שנפח האחסון הנדרש בעתיד יהיה קבוע ב-30 הימים הבאים מרגע הרצת השאילתה. חשוב לזכור שהתחזית מוגבלת למסדי נתונים טבלאיים, ולא כוללת את כל סוגי הטבלאות האחרים במערך הנתונים.
המחירים שמופיעים במשתני התמחור בשאילתה הזו הם לאזור us-central1. אם רוצים להריץ את השאילתה הזו באזור אחר, צריך לעדכן את משתני התמחור בהתאם. למידע על מחירים, ראו תמחור של Storage.
פותחים את הדף BigQuery במסוף Google Cloud .
מזינים את שאילתת GoogleSQL הבאה בתיבה Query editor. ב-
INFORMATION_SCHEMAנדרש תחביר GoogleSQL. GoogleSQL הוא תחביר ברירת המחדל במסוף Google Cloud .DECLARE active_logical_gib_price FLOAT64 DEFAULT 0.02; DECLARE long_term_logical_gib_price FLOAT64 DEFAULT 0.01; DECLARE active_physical_gib_price FLOAT64 DEFAULT 0.04; DECLARE long_term_physical_gib_price FLOAT64 DEFAULT 0.02; WITH storage_sizes AS ( SELECT table_schema AS dataset_name, -- Logical SUM(IF(deleted=false, active_logical_bytes, 0)) / power(1024, 3) AS active_logical_gib, SUM(IF(deleted=false, long_term_logical_bytes, 0)) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, -- Restorable previously deleted physical SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib, FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT WHERE total_physical_bytes + fail_safe_physical_bytes > 0 -- Base the forecast on base tables only for highest precision results AND table_type = 'BASE TABLE' GROUP BY 1 ) SELECT dataset_name, -- Logical ROUND(active_logical_gib, 2) AS active_logical_gib, ROUND(long_term_logical_gib, 2) AS long_term_logical_gib, -- Physical ROUND(active_physical_gib, 2) AS active_physical_gib, ROUND(long_term_physical_gib, 2) AS long_term_physical_gib, ROUND(time_travel_physical_gib, 2) AS time_travel_physical_gib, ROUND(fail_safe_physical_gib, 2) AS fail_safe_physical_gib, -- Compression ratio ROUND(SAFE_DIVIDE(active_logical_gib, active_no_tt_physical_gib), 2) AS active_compression_ratio, ROUND(SAFE_DIVIDE(long_term_logical_gib, long_term_physical_gib), 2) AS long_term_compression_ratio, -- Forecast costs logical ROUND(active_logical_gib * active_logical_gib_price, 2) AS forecast_active_logical_cost, ROUND(long_term_logical_gib * long_term_logical_gib_price, 2) AS forecast_long_term_logical_cost, -- Forecast costs physical ROUND((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price, 2) AS forecast_active_physical_cost, ROUND(long_term_physical_gib * long_term_physical_gib_price, 2) AS forecast_long_term_physical_cost, -- Forecast costs total ROUND(((active_logical_gib * active_logical_gib_price) + (long_term_logical_gib * long_term_logical_gib_price)) - (((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price) + (long_term_physical_gib * long_term_physical_gib_price)), 2) AS forecast_total_cost_difference FROM storage_sizes ORDER BY (forecast_active_logical_cost + forecast_active_physical_cost) DESC;
לוחצים על Run.
התוצאה אמורה להיראות כך:
+--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | dataset_name | active_logical_gib | long_term_logical_gib | active_physical_gib | long_term_physical_gib | active_compression_ratio | long_term_compression_ratio | forecast_active_logical_cost | forecast_long_term_logical_cost | forecast_active_physical_cost | forecast_long_term_physical_cost | forecast_total_cost_difference | +--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | dataset1 | 10.0 | 10.0 | 1.0 | 1.0 | 10.0 | 10.0 | 0.2 | 0.1 | 0.04 | 0.02 | 0.24 |
פתרון בעיות
כדי להפעיל את התצוגה הזו, אפשר להגדיר את הערך של enable_info_schema_storage ל-TRUE בפרויקט או בארגון. למידע נוסף על ניהול ההגדרות, קראו את המאמר ניהול הגדרות אישיות.
אם לא הגדרתם את ההגדרה הזו, תופיע השגיאה הבאה:
INFORMATION_SCHEMA.TABLE_STORAGE hasn't been enabled for project <myproject>. Consider using one of the following SQL statements to enable data collection: ALTER PROJECT `<myproject>` SET OPTIONS (`region-<region>.enable_info_schema_storage` = TRUE) Or to enable for the entire organization: ALTER ORGANIZATION SET OPTIONS (`region-<region>.enable_info_schema_storage` = TRUE) After enabling, please allow around 1 day for the complete historical data to become available.
כדי להפעיל את התצוגה, מריצים את הצהרות ה-SQL שמתוארות בהודעת השגיאה.