Spanner מספק טבלאות מובנות שמתעדות נתונים סטטיסטיים של פעולות קריאה, שאילתות וכתיבה בעמודות של הטבלה. בעזרת נתונים סטטיסטיים של פעולות בעמודות אפשר:
זיהוי עמודות עם תנועת קריאה, שאילתות וכתיבה לא צפויות.
מזהים עמודות בשימוש נרחב.
כשמבצעים שאילתה או כותבים לעמודה, המערכת מגדילה את מספר הפעולות התואם לעמודה הזו באחד, ללא קשר למספר השורות שאליהן יש גישה.
אפשר לעקוב אחרי הביצועים הכוללים של מסד נתונים באמצעות מדדים שמודדים פעולות לשנייה, פעולות לשנייה לפי שיטת API ומדדים קשורים אחרים בתרשימים של תובנות לגבי המערכת.
גישה לנתונים סטטיסטיים של פעולות בעמודות
Spanner מספק את הנתונים הסטטיסטיים של פעולות בעמודות בסכימה SPANNER_SYS. אפשר להשתמש באפשרויות הבאות כדי לגשת לנתוני SPANNER_SYS:
דף Spanner Studio של מסד נתונים במסוף Google Cloud
השיטה
executeSqlאו השיטהexecuteStreamingSql.
השיטות הבאות לקריאה יחידה ש-Spanner מספק לא תומכות ב-SPANNER_SYS:
- ביצוע קריאה חזקה משורה אחת או מכמה שורות בטבלה.
- ביצוע קריאה בעבר משורה אחת או מכמה שורות בטבלה.
- קריאה משורה אחת או מכמה שורות באינדקס משני.
מידע נוסף זמין במאמר בנושא שיטות קריאה יחידות.
נתונים סטטיסטיים על פעולות בעמודות
בטבלאות הבאות אפשר לעקוב אחרי נתוני הקריאה, השאילתות והכתיבה בעמודות במהלך תקופה מסוימת:
-
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE: פעולות במהלך אינטרוולים של דקה אחת -
SPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE: פעולות במהלך מרווחי זמן של 10 דקות -
SPANNER_SYS.COLUMN_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 |
שם הטבלה או האינדקס. |
COLUMN_NAME |
STRING |
שם העמודה. |
READ_COUNT |
INT64 |
מספר הקריאות מהעמודה. |
QUERY_COUNT |
INT64 |
מספר השאילתות שקוראות מהעמודה. |
WRITE_COUNT |
INT64 |
מספר השאילתות שכותבות לטבלה. |
IS_QUERY_CACHE_MEMORY_CAPPED |
BOOL |
האם איסוף הנתונים הסטטיסטיים הוגבל בגלל מחסור בזיכרון. |
אם מוסיפים נתונים למסד הנתונים באמצעות מוטציות, Spanner מגדיל את הערך של WRITE_COUNT ב-1 לכל טבלה שהגישה אליה מתבצעת באמצעות הצהרת הוספה. בנוסף, שאילתה שגשת לאינדקס בלי לסרוק את הטבלה הבסיסית מגדילה רק את הערך של QUERY_COUNT באינדקס.
שמירת נתונים
לפחות, Spanner שומר נתונים לכל טבלה למשך תקופות הזמן הבאות:
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE: מרווחי זמן שכוללים את שש השעות האחרונות.
SPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE: מרווחי זמן שכוללים את ארבעת הימים האחרונים.
SPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR: מרווחי זמן שכוללים את 30 הימים האחרונים.
שאילתות לדוגמה
בקטע הזה מופיעות כמה דוגמאות להצהרות SQL שמחלצות נתונים סטטיסטיים של פעולות מצטברות בעמודות. אפשר להריץ את הצהרות ה-SQL האלה באמצעות ספריות הלקוח או Google Cloud CLI.
הפעלת שאילתה על עמודות הטבלה עם הכי הרבה פעולות כתיבה במרווח הזמן האחרון
GoogleSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
שאילתה על העמודות עם הכי הרבה פעולות שאילתה במרווח הזמן האחרון
GoogleSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
שליחת שאילתה לגבי השימוש בעמודה ב-6 השעות האחרונות
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
כאשר:
-
table_nameחייב להיות טבלה או אינדקס קיימים במסד הנתונים. - הערך
column_nameחייב להיות עמודה קיימת בטבלה.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
כאשר:
-
table_nameחייב להיות טבלה או אינדקס קיימים במסד הנתונים. - הערך
column_nameחייב להיות עמודה קיימת בטבלה.
שאילתה לגבי השימוש בעמודה ב-14 הימים האחרונים
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY) AND table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
מחליפים את הפרטים הבאים:
-
table_name: שם הטבלה או האינדקס במסד הנתונים. -
column_name: שם העמודה בטבלה.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > spanner.timestamptz_subtract(now(), '14 DAY') AND table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
מחליפים את הפרטים הבאים:
-
table_name: שם הטבלה או האינדקס במסד הנתונים. -
column_name: שם העמודה בטבלה.
המאמרים הבאים
מידע נוסף על טבלאות נתונים סטטיסטיים מובנות אחרות
מידע נוסף על שיטות מומלצות ל-SQL ב-Spanner