כשהשורות משתנות, המנוע מבוסס-העמודות מסמן את הנתונים המושפעים במאגר העמודות ב-AlloyDB ל-PostgreSQL כלא תקינים, והאצת השאילתות יורדת בהדרגה. כדי שהשאילתות ירוצו מהר, אפשר לשנות את הסף המינימלי לרענון אוטומטי או לרענן באופן ידני טבלאות ואינדקסים של וקטורים.
המנוע מבוסס-העמודות לא מעדכן מיד את מאגר העמודות כשמוסיפים, מוחקים או מעדכנים שורות בטבלה. במקום זאת, השאילתות מתוכננות ומופעלות באמצעות נתונים מבוססי-עמודות ממאגר העמודות ונתונים מבוססי-שורות מהמטמון של השורות ומאחסון מסד הנתונים.
עם הזמן, ככל שיותר ויותר בלוקים של נתונים הופכים ללא חוקיים, השיפורים בביצועי השאילתות שהמנוע מבוסס-העמודות מספק מצטמצמים עד לנקודה שבה צריך לרענן את הנתונים מבוססי-העמודות כדי לשחזר את השיפורים בביצועי השאילתות. כשמגיעים לסף המינימלי לרענון, המנוע מבוסס-העמודות משתמש במשימה ברקע כדי לרענן את הנתונים הלא תקינים במאגר הנתונים בעמודות. כברירת מחדל, המנוע מבוסס-העמודות משתמש בסף מינימלי לרענון של 25, כלומר תוכן מסוים במאגר העמודות מסומן לרענון כש-25% מהתוכן שלו הופך ללא חוקי. אתם יכולים לשנות את הסף המינימלי לרענון כדי להתאים את התקורה של הרענון האוטומטי, וכך לשפר את הביצועים של השאילתות השוטפות בעומס העבודה של האפליקציה.
רענון ידני של טבלאות ואינדקסים וקטוריים של HNSW ו-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';
מחליפים את INDEX_NAME במחרוזת שמכילה את השם של אינדקס הווקטור.
שינוי הסף המינימלי לרענון של המנוע מבוסס-העמודות
כדי לשנות את הסף המינימלי לרענון של המנוע מבוסס-העמודות, צריך לשנות את הערך של הדגל לניהול מסד הנתונים google_columnar_engine.refresh_threshold_percentage במכונה של AlloyDB.
המסוף
- נכנסים לדף Clusters במסוף Google Cloud .
- לוחצים על השם של האשכול שמכיל את המכונה שרוצים להגדיר.
- בקטע Instances in your cluster, מאתרים את המכונה ולוחצים על Edit.
- בקטע Flags, מוסיפים דגל חדש או משנים את הדגל הקיים
google_columnar_engine.refresh_threshold_percentage. - מגדירים את הערך כמספר שלם בין
0ל-100(או-1כדי להשבית את הרענון האוטומטי). הערך הזה מייצג את אחוז הנתונים הלא חוקיים שמפעילים רענון. - לוחצים על סיום.
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: ערך של מספר שלם בין
0ל-100(או-1כדי להשבית את הרענון האוטומטי). הערך הזה מציין את אחוז בלוקי הנתונים בתוכן שצריכים להיות לא חוקיים כדי שהתוכן יסומן לרענון. - CLUSTER_ID: המזהה של האשכול שבו נמצא המכונה.
- REGION_ID: האזור של האשכול.
- PROJECT_ID: מזהה הפרויקט
רענון ידני של טבלאות ואינדקסים וקטוריים במאגר העמודות
אתם יכולים לרענן באופן ידני טבלאות ואינדקסים וקטוריים במנוע מבוסס-העמודות בכל שלב, באמצעות פונקציות 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 במחרוזת שמכילה את שם האינדקס שרוצים לרענן.