שמירה על עדכניות הנתונים במאגר העמודות בזיכרון

בוחרים גרסה של מאמרי העזרה:

בדף הזה מוסבר איך לשמור על עדכניות הנתונים במאגר העמודות של המנוע מבוסס-העמודות ב-AlloyDB Omni שפועל כשירות systemd.

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

עם הזמן, ככל שיותר ויותר בלוקים של נתונים הופכים ללא חוקיים, השיפורים בביצועי השאילתות שהמנוע מבוסס-העמודות מספק מצטמצמים עד לנקודה שבה צריך לרענן את הנתונים מבוססי-העמודות כדי לשחזר את השיפורים בביצועי השאילתות. כשמגיעים לסף המינימלי לרענון, המנוע מבוסס-העמודות משתמש במשימה ברקע כדי לרענן את הנתונים הלא תקינים במאגר הנתונים בעמודות. כברירת מחדל, המנוע מבוסס-העמודות משתמש בסף מינימלי לרענון של 50, כלומר תוכן נתון במאגר העמודות מסומן לרענון כש-50% מהתוכן שלו הופך ללא חוקי. אתם יכולים לשנות את הסף המינימלי לרענון כדי להתאים את התקורה של הרענון האוטומטי, וכך לשפר את הביצועים של השאילתות השוטפות בעומס העבודה של האפליקציה.

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

בדיקת אחוז הנתונים הלא חוקיים

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

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

SELECT relation_name, invalid_percentage FROM g_columnar_relations;

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

SELECT   relation_name,
  CASE
    WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
    ELSE 0.0
  END AS invalid_block_percentage
FROM
  g_columnar_relations;
WHERE
 relation_name =  TABLE_NAME

מחליפים את TABLE_NAME במחרוזת שמכילה את שם הטבלה או התצוגה המהותית. אם המשאב נמצא בסכימה אחרת, ולא ב-public, צריך לציין את שם הסכימה בפורמט SCHEMA_NAME.TABLE_NAME, לדוגמה myschema.mytable.

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

SELECT   index_name,
  CASE
    WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
    ELSE 0.0
  END AS invalid_block_percentage
FROM
  g_columnar_indexes;
WHERE
  index_name = INDEX_NAME

שינוי הסף המינימלי לרענון של המנוע מבוסס-העמודות

כדי לשנות את הסף המינימלי לרענון של המנוע מבוסס-העמודות, צריך לשנות את הערך של הדגל לניהול מסד הנתונים google_columnar_engine.refresh_threshold_percentage.

ALTER SYSTEM SET google_columnar_engine.refresh_threshold_percentage=THRESHOLD;

מחליפים את THRESHOLD בערך של מספר שלם בין 1 ל-100. הערך הזה מציין את אחוז בלוקי הנתונים בתוכן שצריכים להפוך ללא חוקיים כדי שהתוכן יסומן לרענון.

רענון ידני של טבלאות ואינדקסים וקטוריים במאגר העמודות

אתם יכולים לרענן באופן ידני טבלאות ואינדקסים וקטוריים במנוע מבוסס-העמודות בכל שלב, באמצעות פונקציות SQL ייעודיות. סוגי האינדקסים הנתמכים הם ScaNN ו-HNSW.

כדי לרענן את הנתונים של טבלה במנוע מבוסס-העמודות, מריצים את הפונקציה google_columnar_engine_refresh.

SELECT google_columnar_engine_refresh(TABLE_NAME);

מחליפים את TABLE_NAME במחרוזת שמכילה את שם הטבלה או התצוגה המהותית. אם המשאב נמצא בסכימה אחרת, ולא ב-public, צריך לציין את שם הסכימה בפורמט SCHEMA_NAME.TABLE_NAME, לדוגמה myschema.mytable.

באופן דומה, כדי לרענן באופן ידני אינדקס וקטורי במנוע מבוסס-העמודות, מריצים את הפונקציה google_columnar_engine_refresh_index.

SELECT google_columnar_engine_refresh_index(index => INDEX_NAME);

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