ב-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 הימים האחרונים.
המאמרים הבאים
- מידע ולמידה על כלים אחרים לבדיקת נתונים
- מידע נוסף על פרטים אחרים ש-Spanner מאחסן לכל מסד נתונים בטבלאות סכימת המידע של מסד הנתונים.
- מידע נוסף על שיטות מומלצות ל-SQL ב-Spanner
- מידע נוסף על בדיקת ניצול גבוה של המעבד (CPU)
- מידע ולמידה על מנוע מבוסס-עמודות
- איך עוקבים אחרי המנוע מבוסס-העמודות