נתונים סטטיסטיים על פעולות בעמודות

‫Spanner מספק טבלאות מובנות שמתעדות נתונים סטטיסטיים של פעולות קריאה, שאילתות וכתיבה בעמודות של הטבלה. בעזרת נתונים סטטיסטיים של פעולות בעמודות אפשר:

  • זיהוי עמודות עם תנועת קריאה, שאילתות וכתיבה לא צפויות.

  • מזהים עמודות בשימוש נרחב.

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

אפשר לעקוב אחרי הביצועים הכוללים של מסד נתונים באמצעות מדדים שמודדים פעולות לשנייה, פעולות לשנייה לפי שיטת API ומדדים קשורים אחרים בתרשימים של תובנות לגבי המערכת.

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

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

השיטות הבאות לקריאה יחידה ש-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: שם העמודה בטבלה.

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