בדף הזה נסביר איך לשמור על עדכניות הנתונים בחנות העמודות של מנוע מבוסס-עמודות ב-AlloyDB ל-PostgreSQL.
כשמוסיפים, מוחקים או מעדכנים שורות בטבלה, מנוע מבוסס-עמודות לא מעדכן את הנתונים במאגר העמודות באופן מיידי. במקום זאת, המערכת מסמנת את התוכן המושפע בחנות העמודות כלא חוקי, והשאילתות מתוכננות ומופעלות באמצעות נתונים מבוססי-עמודות מחנות העמודות ונתונים מבוססי-שורות ממטמון השורות ומאחסון מסד הנתונים.
עם הזמן, ככל שיותר ויותר בלוקי נתונים הופכים ללא תקפים, השיפורים בביצועי השאילתות שמתקבלים ממנוע מבוסס-עמודות מצטמצמים עד לנקודה שבה צריך לרענן את נתוני העמודות כדי להחזיר את השיפורים בביצועי השאילתות. כשמגיעים לסף הרענון הזה, מנוע מבוסס-עמודות משתמש בעבודת רקע כדי לרענן את הנתונים הלא תקינים במאגר העמודות. כברירת מחדל, מנוע מבוסס-עמודות משתמש בסף רענון של 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 database flag במופע AlloyDB.
המסוף
- נכנסים לדף Clusters במסוף Google Cloud .
- לוחצים על שם האשכול שמכיל את המופע שרוצים להגדיר.
- בקטע Instances in your cluster (מופעים באשכול), מאתרים את המופע ולוחצים על Edit (עריכה).
- בקטע Flags, מוסיפים דגל חדש או משנים את הדגל הקיים
google_columnar_engine.refresh_threshold_percentage. - צריך להגדיר את הערך כמספר שלם בין
1ל-100. הערך הזה מייצג את אחוז הנתונים הלא תקינים שמפעיל רענון. - לוחצים על סיום.
gcloud
כדי להשתמש ב-CLI של gcloud, אפשר להתקין ולהפעיל את Google Cloud CLI, או להשתמש ב-Cloud Shell.
כדי לשנות את סף הרענון של מנוע מבוסס-עמודות, מריצים את הפקודה הבאה:gcloud alloydb instances update INSTANCE_ID \
--database-flags=google_columnar_engine.refresh_threshold_percentage=THRESHOLD \
--cluster=CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_ID: המזהה של המכונה.
- THRESHOLD: ערך של מספר שלם בין
1ל-100. הערך הזה מציין את אחוז בלוקי הנתונים בתוכן שצריכים להיות לא חוקיים כדי שהתוכן יסומן לרענון. - CLUSTER_ID: המזהה של האשכול שבו נמצאת המכונה.
- REGION_ID: האזור של האשכול.
- PROJECT_ID: מזהה הפרויקט
רענון ידני של טבלאות ואינדקסים של ScaNN בחנות העמודות
בכל שלב אפשר לרענן ידנית טבלאות ואינדקסים של ScaNN במנוע העמודות באמצעות פונקציות SQL ייעודיות.
כדי לרענן את הנתונים של טבלה במנוע מבוסס-עמודות, מריצים את הפונקציה google_columnar_engine_refresh.
SELECT google_columnar_engine_refresh(TABLE_NAME);
מחליפים את TABLE_NAME במחרוזת שמכילה את שם הטבלה או התצוגה החומרית. אם המשאב נמצא בסכימה ששונה מ-public, צריך לציין את שם הסכימה בפורמט SCHEMA_NAME.TABLE_NAME, לדוגמה: myschema.mytable.
באופן דומה, כדי לרענן ידנית אינדקס ScaNN במנוע מבוסס-עמודות, מריצים את הפונקציה google_columnar_engine_refresh_index.
SELECT google_columnar_engine_refresh_index(index => INDEX_NAME);
מחליפים את INDEX_NAME במחרוזת שמכילה את השם של אינדקס ScaNN שרוצים לרענן.