ב-Spanner יש טבלאות מובנות שמתעדות את הנתונים הסטטיסטיים של פעולות הקריאה (או השאילתות), הכתיבה והמחיקה בטבלאות (כולל טבלאות של סנכרון שינויים בזרמי נתונים) ובאינדקסים. בעזרת נתונים סטטיסטיים של פעולות בטבלה אתם יכולים:
זיהוי טבלאות עם תנועת כתיבה מוגברת שמתאימה לעלייה בנפח האחסון.
זיהוי טבלאות עם תנועת קריאה, כתיבה ומחיקה לא צפויה.
זיהוי טבלאות עם שימוש נרחב.
כששולחים שאילתה לטבלה או כותבים לטבלה, מספר הפעולות המתאים לטבלה גדל ב-1, בלי קשר למספר השורות שאליהן ניגשים.
אפשר לעקוב אחרי מדדים כלליים של פעולות לשנייה במסד נתונים באמצעות Operations per second, Operations per second by API method ומדדים קשורים אחרים בתרשימים של System Insights.
גישה לנתונים סטטיסטיים של פעולות בטבלה
Spanner מספק את נתוני הפעולות בטבלה בסכימה SPANNER_SYS.אפשר לגשת לנתוני SPANNER_SYS בדרכים הבאות:
דף Spanner Studio של מסד נתונים במסוף Google Cloud .
הפקודה
gcloud spanner databases execute-sql.השיטה
executeSqlאו השיטהexecuteStreamingSql.
השיטות הבאות לקריאה יחידה ש-Spanner מספק לא תומכות ב-SPANNER_SYS:
- ביצוע קריאה חזקה משורה אחת או מכמה שורות בטבלה.
- ביצוע קריאה בעבר משורה אחת או מכמה שורות בטבלה.
- קריאה משורה אחת או מכמה שורות באינדקס משני.
נתונים סטטיסטיים של פעולות בטבלה
בטבלאות הבאות אפשר לעקוב אחרי נתונים סטטיסטיים של קריאה (או שאילתה), כתיבה ומחיקה בטבלאות ובאינדקסים שלכם במהלך תקופה מסוימת:
-
SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: פעולות במהלך מרווחי זמן של דקה אחת -
SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: פעולות במהלך מרווחי זמן של 10 דקות -
SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: פעולות במהלך מרווחי זמן של שעה
הטבלאות האלה כוללות את המאפיינים הבאים:
כל טבלה מכילה נתונים של מרווחי זמן לא חופפים באורך שצוין בשם הטבלה.
המרווחים מבוססים על שעות. מרווחים של דקה מתחילים בתחילת הדקה, מרווחים של 10 דקות מתחילים כל 10 דקות בתחילת השעה, ומרווחים של שעה מתחילים בתחילת השעה.
לדוגמה, בשעה 11:59:30, המרווחים האחרונים שזמינים לשאילתות SQL הם:
- דקה אחת: 11:58:00–11:58:59
- 10 דקות: 11:40:00–11:49:59
- שעה אחת: 10:00:00–10:59:59 AM
סכימה של טבלאות נתונים סטטיסטיים של כל פעולות הטבלה
| שם העמודה | סוג | תיאור |
|---|---|---|
INTERVAL_END |
TIMESTAMP |
סוף מרווח הזמן שבו נאספו גדלי הטבלאות. |
TABLE_NAME |
STRING |
שם הטבלה או האינדקס. |
READ_QUERY_COUNT |
INT64 |
מספר השאילתות או הקריאות שמתבצעות מהטבלה. |
WRITE_COUNT |
INT64 |
מספר השאילתות שכותבות לטבלה. |
DELETE_COUNT |
INT64 |
מספר השאילתות שמבצעות מחיקות בטבלה. |
אם מוסיפים נתונים למסד הנתונים באמצעות מוטציות, הערך של write_count גדל ב-1 לכל טבלה שהגישה אליה מתבצעת באמצעות הצהרת ההוספה. בנוסף, שאילתה שגשת לאינדקס בלי לסרוק את הטבלה הבסיסית, מגדילה רק את הערך read_query_count באינדקס.
שמירת נתונים
לפחות, Spanner שומר נתונים לכל טבלה למשך תקופות הזמן הבאות:
SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: מרווחי זמן שכוללים את 6 השעות האחרונות.
SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: מרווחי זמן שכוללים את 4 הימים האחרונים.
SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: מרווחי זמן שכוללים את 30 הימים האחרונים.
שאילתות לדוגמה
בקטע הזה מופיעות כמה דוגמאות להצהרות SQL שמחלצות נתונים סטטיסטיים של פעולות מצטברות בטבלה. אפשר להריץ את הצהרות ה-SQL האלה באמצעות ספריות הלקוח או gcloud spanner.
שאילתה של הטבלאות והאינדקסים עם הכי הרבה פעולות כתיבה במרווח הזמן האחרון
SELECT interval_end,
table_name,
write_count
FROM spanner_sys.table_operations_stats_minute
WHERE interval_end = (
SELECT MAX(interval_end)
FROM spanner_sys.table_operations_stats_minute)
ORDER BY write_count DESC;
הפעלת שאילתה על הטבלאות והאינדקסים עם הכי הרבה פעולות מחיקה במרווח הזמן האחרון
SELECT interval_end,
table_name,
delete_count
FROM spanner_sys.table_operations_stats_minute
WHERE interval_end = (
SELECT MAX(interval_end)
FROM spanner_sys.table_operations_stats_minute)
ORDER BY delete_count DESC;
הפעלת שאילתה על הטבלאות והאינדקסים עם הכי הרבה פעולות קריאה ושאילתה במרווח הזמן האחרון
SELECT interval_end,
table_name,
read_query_count
FROM spanner_sys.table_operations_stats_minute
WHERE interval_end = (
SELECT MAX(interval_end)
FROM spanner_sys.table_operations_stats_minute)
ORDER BY read_query_count DESC;
שאילתה לגבי השימוש בטבלה במהלך 6 השעות האחרונות
GoogleSQL
SELECT interval_end,
read_query_count,
write_count,
delete_count
FROM spanner_sys.table_operations_stats_minute
WHERE table_name = "table_name"
ORDER BY interval_end DESC;
כאשר:
-
table_nameחייב להיות טבלה או אינדקס קיימים במסד הנתונים.
PostgreSQL
SELECT interval_end,
read_query_count,
write_count,
delete_count
FROM spanner_sys.table_operations_stats_minute
WHERE table_name = 'table_name'
ORDER BY interval_end DESC;
כאשר:
-
table_nameחייב להיות טבלה או אינדקס קיימים במסד הנתונים.
שאילתה לגבי השימוש בטבלה ב-14 הימים האחרונים
GoogleSQL
SELECT interval_end,
read_query_count,
write_count,
delete_count
FROM spanner_sys.table_operations_stats_hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY)
AND table_name = "table_name"
ORDER BY interval_end DESC;
כאשר:
-
table_nameחייב להיות טבלה או אינדקס קיימים במסד הנתונים.
PostgreSQL
SELECT interval_end, read_query_count, write_count, delete_count FROM spanner_sys.table_operations_stats_hour WHERE interval_end > spanner.timestamptz_subtract(now(), '14 DAY') AND table_name = 'table_name' ORDER BY interval_end DESC;
כאשר:
-
table_nameחייב להיות טבלה או אינדקס קיימים במסד הנתונים.
שאילתות על טבלאות ואינדקסים שלא נעשה בהם שימוש ב-24 השעות האחרונות
GoogleSQL
(SELECT t.table_name FROM information_schema.tables AS t WHERE t.table_catalog = "" AND t.table_schema = "" AND t.table_type = "BASE TABLE" UNION ALL SELECT cs.change_stream_name FROM information_schema.change_streams cs WHERE cs.change_stream_catalog = "" AND cs.change_stream_schema = "" UNION ALL SELECT idx.index_name FROM information_schema.indexes idx WHERE idx.index_type = "INDEX" AND idx.table_catalog = "" AND idx.table_schema = "") EXCEPT ALL (SELECT DISTINCT(table_name) FROM spanner_sys.table_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR));
המאמרים הבאים
אפשר להשתמש בנתונים סטטיסטיים של גדלי טבלאות כדי לקבוע את הגדלים של הטבלאות והאינדקסים.
מידע נוסף על שיטות מומלצות ל-SQL ב-Spanner