תצוגת TABLE_STORAGE

בתצוגה INFORMATION_SCHEMA.TABLE_STORAGE מוצגת תמונת מצב עדכנית של השימוש בנפח האחסון בטבלאות ובתצוגות חומריות. כשמבצעים שאילתה בתצוגה INFORMATION_SCHEMA.TABLE_STORAGE, תוצאות השאילתה מכילות שורה אחת לכל טבלה או תצוגה חומרית בפרויקט הנוכחי.

הנתונים בתצוגה INFORMATION_SCHEMA.TABLE_STORAGE לא מתעדכנים בזמן אמת, ובדרך כלל יש עיכוב של כמה שניות עד כמה דקות בעדכונים. יכול להיות שיעבור עד יום עד שהשינויים בנפח האחסון שנגרמים רק בגלל מחיקת מחיצות או טבלאות, או בגלל שינויים בחלון הזמן של מסד הנתונים, יופיעו בתצוגה INFORMATION_SCHEMA.TABLE_STORAGE. במקרים של מחיקת מערך נתונים שמכיל יותר מ-1,000 טבלאות, התצוגה הזו לא תשקף את השינוי עד שיחלוף חלון הזמן של Time Travel עבור מערך הנתונים שנמחק.

תצוגות האחסון בטבלה מאפשרות לכם לראות בקלות את צריכת נפח האחסון הנוכחית, וגם מספקות פרטים על סוג האחסון: בייטים לוגיים לא דחוסים, בייטים פיזיים דחוסים או בייטים של 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_PHYSICAL_BYTES מהערך של ACTIVE_PHYSICAL_BYTES.

מידע נוסף מפורט במאמר בנושא תמחור אחסון.

הסבר על ערכי בייט לעומת יחידות חיוב

העמודות *_BYTES בתצוגות INFORMATION_SCHEMA.TABLE_STORAGE מספקות תמונת מצב של נפח האחסון הנוכחי בבייטים. כך תוכלו לדעת כמה נתונים אתם מאחסנים באותו רגע.

עם זאת, החיוב על אחסון ב-BigQuery, כפי שמוצג בדוחות החיוב ב-Cloud, לא מבוסס רק על הגודל הרגעי הזה. במקום זאת, החיוב מחושב על סמך כמות הנתונים שנשמרים לאורך זמן. יחידות החיוב הרגילות הן GiB-month או TiB-month.

לדוגמה, אחסון של 1GiB למשך חודש קלנדרי מלא נחשב לשימוש של 1GiB-חודש, בלי קשר למספר הימים בחודש (28 עד 31). באופן דומה, אם מאחסנים נתונים רק בחלק מהחודש, החיוב יהיה יחסי. אחסון של ‎31 GiB ליום אחד בחודש של 31 ימים שווה בערך ל-‎1 GiB-month, בדיוק כמו שאחסון של ‎28 GiB ליום אחד בחודש של 28 ימים שווה בערך ל-‎1 GiB-month.

ערכי הבייטים ב-INFORMATION_SCHEMA.TABLE_STORAGE הם נתוני קלט חיוניים להערכת העלויות הפוטנציאליות, אבל בחשבון בפועל משתקף החישוב הרציף של (bytes stored * duration stored). הערכים בתצוגה הזו לא צפויים להיות זהים לפריטים בדוח החיוב, שמצטברים במהלך תקופת החיוב.

לפרטים מקיפים על אופן חישוב עלויות האחסון, ראו את הדף תמחור האחסון.

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות לשליחת שאילתות לתצוגה INFORMATION_SCHEMA.TABLE_STORAGE, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ BigQuery Metadata Viewer (roles/bigquery.metadataViewer) בפרויקט. להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות לשליחת שאילתות לתצוגה 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 (נתונים שנמחקו או שונו). לא נכללים בחישוב בייטים של נתונים שמוחקים או משנים אותם אחרי חלון הזמן של השחזור.
active_physical_bytes INT64 מספר הבייטים הפיזיים (דחוסים) שגילם פחות מ-90 ימים, כולל בייטים של נתונים שנמחקו או שונו.
long_term_physical_bytes INT64 מספר הבייטים הפיזיים (דחוסים) שנוצרו לפני יותר מ-90 ימים.
time_travel_physical_bytes INT64 מספר הבייטים הפיזיים (דחוסים) שנעשה בהם שימוש באחסון של Time Travel (נתונים שנמחקו או שונו).
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_EXPIRATION:) נמחקה אחרי שתם הזמן שהוגדר לתפוגה
  • קבוצת נתונים אחת (DATASET_DELETION:) נמחקה על ידי המשתמש
  • משתמש מחק טבלה אחת (USER_DELETED:)
table_deletion_time TIMESTAMP השעה שבה הטבלה נמחקה.

כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.

היקף ותחביר

שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן אזור. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:

שם התצוגה היקף המשאבים היקף האזור
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE[_BY_PROJECT] ברמת הפרויקט REGION
מחליפים את מה שכתוב בשדות הבאים:
  • אופציונלי: PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
  • 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. אם רוצים להריץ את השאילתה הזו באזור אחר, צריך לעדכן את משתני התמחור בהתאם. מידע על מחירים מופיע במאמר בנושא תמחור של אחסון.

  1. פותחים את הדף BigQuery במסוף Cloud de Confiance .

    לדף BigQuery

  2. מזינים את שאילתת GoogleSQL הבאה בתיבה עורך השאילתות. נדרש תחביר GoogleSQL ל-INFORMATION_SCHEMA. ‫GoogleSQL היא התחביר שמוגדר כברירת מחדל במסוף Cloud de Confiance .

    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;
    INFORMATION_SCHEMA
  3. לוחצים על 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 | forecaset_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 |