כדי להשתמש במנוע מבוסס-העמודות כשמשתמשים ב-AlloyDB ל-PostgreSQL ב- Google Cloud, קראו את המאמר הגדרת המנוע מבוסס-העמודות.
סקירה כללית על המנוע מבוסס-העמודות של AlloyDB
הפעלת המנוע מבוסס-העמודות
כדי להשתמש במנוע מבוסס-עמודות במכונה, מגדירים את הדגל google_columnar_engine.enabled של המכונה לערך on.
כדי להגדיר את הדגל הזה במכונה:
מריצים את הפקודה
ALTER SYSTEMPostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'אם רוצים לשנות את ההגדרות של המנוע מבוסס-העמודות, צריך לפעול לפי ההוראות שבקטע הבא לפני שמפעילים מחדש את שרת מסד הנתונים. אחרת, מבצעים את שני השלבים הבאים כדי להפעיל מחדש את שרת מסד הנתונים.
הגדרת הגודל של מאגר העמודות
כשהמנוע מבוסס-העמודות מופעל במכונה, AlloyDB מקצה חלק מהזיכרון של המכונה לאחסון הנתונים מבוססי-העמודות. הקצאת זיכרון RAM מהיר במיוחד לחנות העמודות מבטיחה ש-AlloyDB יוכל לגשת לנתונים העמודתיים במהירות המרבית.
אפשר גם להגדיר את ההקצאה לגודל קבוע וספציפי באמצעות הדגל google_columnar_engine.memory_size_in_mb.
כדי להגדיר את הדגל הזה במופע:
מריצים את הפקודה
ALTER SYSTEMב-PostgreSQL:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;מחליפים את
COLUMN_STORE_SIZEבגודל החדש של מאגר העמודות, במגה-בייט.
הפעלת שאילתת איחוד (join) וקטורית
למנוע מבוסס-העמודות יש תכונה של שאילתת איחוד (join) וקטורית, שיכולה לשפר את הביצועים של שאילתות איחוד על ידי הפעלת עיבוד וקטורי על שאילתות שעומדות בדרישות.
אחרי שמפעילים את ההצטרפות הווקטורית, מתכנן השאילתות של AlloyDB יכול להחיל את אופרטור ההצטרפות הווקטורית במקום אופרטור ההצטרפות הרגיל של PostgreSQL. כדי לקבל את ההחלטה הזו, הכלי לתכנון משווה את העלות של ביצוע השאילתה בכל אחת מהשיטות.
כדי להפעיל שאילתת איחוד (join) וקטורית במכונה, מגדירים את הדגל google_columnar_engine.enable_vectorized_join של המכונה לערך on.
כדי להגדיר את הדגל הזה במופע, מריצים את הפקודה ALTER SYSTEM של PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
כברירת מחדל, מערכת AlloyDB מקצה שרשור אחד לתכונה של הצטרפות וקטורית. כדי להגדיל את מספר ה-threads שזמינים לתכונה הזו, אפשר להגדיר ערך גדול יותר לדגל google_columnar_engine.vectorized_join_threads.
רענון ידני של המנוע מבוסס-העמודות
כברירת מחדל, המנוע מבוסס-העמודות מוגדר לרענן באופן אוטומטי את מאגר העמודות ברקע כשהוא מופעל. יכול להיות שתצטרכו לרענן ידנית את מאגר הנתונים העמודתי במצבים מסוימים, למשל אם הרענון האוטומטי לא מרענן קשר עם מספר גבוה של בלוקים לא חוקיים.
כדי לרענן ידנית את מנוע העמודות, מריצים את שאילתת ה-SQL הבאה:
SELECT google_columnar_engine_refresh('TABLE_NAME');
מחליפים את TABLE_NAME בשם של הטבלה או התצוגה החומרית שרוצים לרענן באופן ידני.
השבתת מנוע מבוסס-עמודות
כדי להשבית את המנוע הטבלאי במכונה, מגדירים את הדגל google_columnar_engine.enabled לערך off.
כדי להגדיר את הדגל הזה במופע:
מריצים את הפקודה
ALTER SYSTEMב-PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
פתרון בעיות במנוע מבוסס-עמודות
פתרון השגיאה 'אין מספיק זיכרון משותף'
אם מפעילים את AlloyDB Omni בלי מספיק זיכרון משותף לשימוש של המנוע מבוסס-העמודות, יכול להיות שתופיע השגיאה הבאה:
Insufficient shared memory for generating the columnar formats.
כדי לפתור את הבעיה, אתם יכולים לציין את כמות הזיכרון המשותף שזמינה לקונטיינר של AlloyDB Omni. הדרך לעשות זאת משתנה בהתאם למערכת ההפעלה המארחת
Linux
מגדילים את המחיצה /dev/shm של המחשב המארח, למשל על ידי עריכת הקובץ /etc/fstab.
macOS
מתקינים מאגר חדש של AlloyDB Omni ומציינים ערך גדול יותר של זיכרון משותף לדגל --shm-size.
תיקון עמודות שלא מתמלאות בנתונים
אם העמודות לא מאוכלסות במנוע העמודות, יכול להיות שאחד מהמצבים הבאים מתקיים:
העמודות שרוצים להוסיף כוללות סוג נתונים שלא נתמך.
אין עמידה בדרישות של המנוע מבוסס-העמודות.
כדי למצוא את הסיבה לבעיה, נסו את הפתרונות הבאים:
מוודאים שהטבלאות או התצוגות המהותיות בשאילתה נמצאות במנוע מבוסס-העמודות.
כדי לוודא את השימוש במנוע העמודות, משתמשים בהצהרה
EXPLAIN.