נתונים סטטיסטיים של פעולות בטבלה

ב-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));

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