נתונים סטטיסטיים על גדלי טבלאות

ב-Spanner יש את הטבלאות המובנות הבאות:

  • ‫SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: פירוט הגדלים של הטבלאות והאינדקסים במסדי הנתונים.
  • ‫SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: מציגה את הגדלים של הטבלאות והאינדקסים במסדי הנתונים לכל קבוצת מיקומים.

גודל הטבלה מצוין בבייטים. גודלי הטבלאות כוללים גרסאות של נתונים. אתם יכולים להשתמש בטבלאות המובנות האלה כדי לעקוב אחרי הגדלים של הטבלאות והאינדקסים לאורך זמן. אפשר גם לעקוב אחרי הגדלים של האינדקסים כשיוצרים, מוחקים ומשנים אותם (כשמוסיפים עוד שורות לאינדקס או כשמוסיפים לו עמודות חדשות). בנוסף, אתם יכולים לבדוק את הגדלים של הטבלאות של סנכרון השינויים בזרמי הנתונים.

אפשר לעקוב אחרי האחסון של מסד הנתונים באמצעות המדד "נפח האחסון הכולל של מסד הנתונים". אפשר לראות את פירוט האחסון של מסד הנתונים באמצעות SPANNER_SYS.TABLE_SIZES_STATS_1HOUR ו-SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR.

גישה לנתונים סטטיסטיים של גודלי טבלאות

ב-Spanner, הנתונים הסטטיסטיים של גודלי הטבלאות מופיעים בסכימה SPANNER_SYS. אפשר לגשת לנתונים של SPANNER_SYS בדרכים הבאות:

  • דף של מסד נתונים ב-Spanner Studio במסוף Google Cloud .

  • הפקודה gcloud spanner databases execute-sql.

  • ה-method‏ executeSql או executeStreamingSql.

ה-methods הבאות לקריאה יחידה ש-Spanner מספק לא תומכות ב-SPANNER_SYS:

  • ביצוע קריאה חזקה משורה אחת או מכמה שורות בטבלה.
  • ביצוע קריאה בעבר משורה אחת או מכמה שורות בטבלה.
  • קריאה משורה אחת או מכמה שורות באינדקס משני.

TABLE_SIZES_STATS_1HOUR

‫SPANNER_SYS.TABLE_SIZES_STATS_1HOUR מכיל את הגדלים של כל הטבלאות במסד הנתונים, ממוינים לפי interval_end. המרווחים מבוססים על זמני השעון, ומסתיימים בשעה עגולה. באופן פנימי, כל 5 דקות Spanner אוסף נתונים מכל השרתים, וזמן קצר לאחר מכן הנתונים זמינים בטבלה TABLE_SIZES_STATS_1HOUR. לאחר מכן, המערכת מחשבת את ממוצע הנתונים בכל שעה. לדוגמה, בשעה 11:59:30, ב-TABLE_SIZES_STATS_1HOUR מוצגים הגדלים הממוצעים של הטבלאות במרווח הזמן שבין 10:00:00 ל-10:59:59.

סכמת טבלאות

שם העמודה סוג תיאור
INTERVAL_END TIMESTAMP סוף מרווח הזמן שבו נאספו גודלי הטבלאות.
TABLE_NAME STRING שם הטבלה או האינדקס.
USED_BYTES FLOAT64 נפח האחסון לפי שורות שמשמש את הטבלה או האינדקס, בבייטים.
USED_SSD_BYTES FLOAT64 נפח האחסון ב-SSD לפי שורות שמשמש את הטבלה או האינדקס, בבייטים.
USED_HDD_BYTES FLOAT64 נפח האחסון מבוסס השורות ב-HDD שמשמש את הטבלה או האינדקס, בבייטים.
COLUMNAR_USED_BYTES FLOAT64 נפח האחסון בפורמט עמודות שמשמש את הטבלה או את האינדקס, בבייטים.
COLUMNAR_USED_SSD_BYTES FLOAT64 נפח האחסון ב-SSD עמודתי שמשמש את הטבלה או האינדקס, בבייטים.
COLUMNAR_USED_HDD_BYTES FLOAT64 נפח האחסון ב-HDD של העמודות שמשמש את הטבלה או האינדקס, בבייטים.
COLUMNAR_COVERAGE_RATIO FLOAT64 היחס בין הנתונים בפורמט עמודות לבין כלל הנתונים בטבלה או באינדקס שבהם מופעלת מדיניות העמודות. הערכים נעים בין 0.0 ל-1.0.
COLUMNAR_SSD_COVERAGE_RATIO FLOAT64 היחס בין נתוני SSD בפורמט עמודות לבין סך כל נתוני ה-SSD בטבלה או באינדקס שמופעלת בהם מדיניות העמודות. הערכים נעים בין 0.0 ל-1.0.
COLUMNAR_HDD_COVERAGE_RATIO FLOAT64 היחס בין נתוני ה-HDD בפורמט עמודות לבין כל נתוני ה-HDD בטבלה או באינדקס שמופעלת בהם מדיניות העמודות. הערכים נעים בין 0.0 ל-1.0.

שאילתות לדוגמה

בקטע הזה מופיעות כמה דוגמאות להצהרות SQL שמאחזרות נתונים סטטיסטיים מצטברים של גודלי טבלאות. אפשר להריץ את הצהרות ה-SQL האלה באמצעות ספריות הלקוח, gcloud spanner או מסוףGoogle Cloud .

שאילתה לגבי 4 הטבלאות והאינדקסים הכי גדולים במרווח הזמן האחרון

השאילתה הבאה מחזירה את 4 הטבלאות והאינדקסים הגדולים ביותר במרווח הזמן האחרון:

SELECT interval_end,
      table_name,
      used_bytes + columnar_used_bytes AS total_used_bytes
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
      SELECT MAX(interval_end)
      FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY total_used_bytes DESC
LIMIT 4;
פלט השאילתה
interval_end table_name total_used_bytes
2022-11-15 13:00:00-07:00 order_item 60495552
2022-11-15 13:00:00-07:00 orders 13350000
2022-11-15 13:00:00-07:00 item_inventory 2094549
2022-11-15 13:00:00-07:00 customer 870000

מגמת גודל השאילתה בטבלה או באינדקס ספציפיים ב-24 השעות האחרונות

השאילתה הבאה מחזירה את גודל הטבלה ב-24 השעות האחרונות:

GoogleSQL

SELECT interval_end,
      used_bytes + columnar_used_bytes AS total_used_bytes
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
  AND table_name = "<var>table_name</var>"
ORDER BY interval_end DESC;

כאשר:

  • הערך table_name חייב להיות טבלה או אינדקס קיימים במסד הנתונים.

PostgreSQL

SELECT interval_end,
      used_bytes + columnar_used_bytes AS total_used_bytes
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
  AND table_name = '<var>table_name</var>'
ORDER BY interval_end DESC;

כאשר:

  • הערך table_name חייב להיות טבלה או אינדקס קיימים במסד הנתונים.
פלט השאילתה
interval_end total_used_bytes
2022-11-15 13:00:00-07:00 13350000
2022-11-15 12:00:00-07:00 13350000
2022-11-15 11:00:00-07:00 13350000
2022-11-15 10:00:00-07:00 13350000
2022-11-15 09:00:00-07:00 13350000
2022-11-15 08:00:00-07:00 12350000
2022-11-15 07:00:00-07:00 12350000
2022-11-15 06:00:00-07:00 12350000
2022-11-15 05:00:00-07:00 11350000
2022-11-15 04:00:00-07:00 11350000
2022-11-15 03:00:00-07:00 11350000
2022-11-15 02:00:00-07:00 11350000
2022-11-15 01:00:00-07:00 11350000
2022-11-15 00:00:00-07:00 10350000
2022-11-14 23:00:00-07:00 10350000
2022-11-14 22:00:00-07:00 10350000
2022-11-14 21:00:00-07:00 10350000
2022-11-14 20:00:00-07:00 10350000
2022-11-14 19:00:00-07:00 10350000
2022-11-14 18:00:00-07:00 10350000
2022-11-14 17:00:00-07:00 10350000
2022-11-14 16:00:00-07:00 10350000
2022-11-14 15:00:00-07:00 10350000
2022-11-14 14:00:00-07:00 10350000
2022-11-14 13:00:00-07:00 10350000

שאילתה לגבי נפח אחסון נדרש של עמודות והכיסוי שלו במרווח הזמן האחרון

השאילתה הבאה מחזירה את גודל האחסון מבוסס-השורות, גודל האחסון מבוסס-העמודות ויחס הכיסוי של האחסון מבוסס-העמודות לטבלאות ולאינדקסים במרווח הזמן האחרון:

GoogleSQL

SELECT interval_end,
      table_name,
      used_bytes,
      columnar_used_bytes,
      columnar_coverage_ratio
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
      SELECT MAX(interval_end)
      FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY columnar_used_bytes DESC;

PostgreSQL

SELECT interval_end,
      table_name,
      used_bytes,
      columnar_used_bytes,
      columnar_coverage_ratio
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
      SELECT MAX(interval_end)
      FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY columnar_used_bytes DESC;
פלט השאילתה
interval_end table_name used_bytes columnar_used_bytes columnar_coverage_ratio
2022-11-15 13:00:00-07:00 order_item 45371664 15123888 0.95
2022-11-15 13:00:00-07:00 orders 10012500 3337500 0.85
2022-11-15 13:00:00-07:00 item_inventory 2094549 0 0
2022-11-15 13:00:00-07:00 customer 870000 0 0

שאילתה על מגמת האחסון והכיסוי של נתונים בעמודות בטבלה או באינדקס ספציפיים ב-24 השעות האחרונות

השאילתה הבאה מחזירה את גודל האחסון בעמודות ואת יחס הכיסוי של טבלה או אינדקס ספציפיים ב-24 השעות האחרונות:

GoogleSQL

SELECT interval_end,
      columnar_used_bytes,
      columnar_coverage_ratio
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
  AND table_name = "<var>table_name</var>"
ORDER BY interval_end DESC;

כאשר:

  • הערך table_name חייב להיות טבלה או אינדקס קיימים במסד הנתונים.

PostgreSQL

SELECT interval_end,
      columnar_used_bytes,
      columnar_coverage_ratio
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
  AND table_name = '<var>table_name</var>'
ORDER BY interval_end DESC;

כאשר:

  • הערך table_name חייב להיות טבלה או אינדקס קיימים במסד הנתונים.
פלט השאילתה
interval_end columnar_used_bytes columnar_coverage_ratio
2022-11-15 13:00:00-07:00 3337500 0.85
2022-11-15 12:00:00-07:00 3337500 0.85
2022-11-15 11:00:00-07:00 3140000 0.8
2022-11-15 10:00:00-07:00 2945000 0.75
2022-11-15 09:00:00-07:00 2750000 0.7
2022-11-15 08:00:00-07:00 2355000 0.6

TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR

‫SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR מכיל את הגדלים של כל הטבלאות במסד הנתונים, ממוינים לפי interval_end, לכל קבוצת מיקום. מרווחי הזמן מבוססים על שעות השעון, ומסתיימים בשעה עגולה. באופן פנימי, כל 5 דקות Spanner אוסף נתונים מכל השרתים, וזמן קצר לאחר מכן הנתונים זמינים בטבלה TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR. לאחר מכן, המערכת מחשבת את ממוצע הנתונים לכל שעה. לדוגמה, בשעה 11:59:30, הערך של TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR הוא הגודל הממוצע של הטבלאות בכל קבוצת מיקומים במרווח הזמן שבין 10:00:00 ל-10:59:59.

סכמת טבלאות

שם העמודה סוג תיאור
INTERVAL_END TIMESTAMP סוף מרווח הזמן שבו נאספו גודלי הטבלאות.
TABLE_NAME STRING שם הטבלה או האינדקס.
LOCALITY_GROUP STRING שם קבוצת היישובים.
USED_BYTES FLOAT64 גודל הטבלה בבייטים.
USED_SSD_BYTES FLOAT64 נפח האחסון ב-SSD שמשמש את הטבלה, בבייטים.
USED_HDD_BYTES FLOAT64 נפח האחסון ב-HDD שמשמש את הטבלה, בבייטים.

שמירת נתונים

‫Spanner שומר נתונים של SPANNER_SYS.TABLE_SIZES_STATS_1HOUR לפרקי זמן של 30 הימים האחרונים.

המאמרים הבאים