מידע על מנוע AlloyDB מבוסס-עמודות

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

המנוע מבוסס-העמודות כולל את הרכיבים הבאים:

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

  • מתכנן שאילתות מבוסס-עמודות ומנוע הפעלה שתומך בשימוש במאגר העמודות בשאילתות.

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

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

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

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

סוגי שאילתות שמתאימים למנוע מבוסס-העמודות

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

  • סריקות של טבלאות

    • יש בו מסננים סלקטיביים, כמו סעיפי WHERE.
    • היא משתמשת במספר קטן של עמודות מטבלה גדולה יותר או מתצוגה מהותית.
    • היא משתמשת בביטויים כמו LIKE,‏ ILIKE,‏ SUBSTR ו-TRIM.
  • פונקציות צבירה

    • הם משתמשים רק בביטויים הבאים: SUM,‏ MIN,‏ MAX,‏ AVG ו-COUNT.
    • הם נמצאים בתחילת השאילתה של סריקה עמודית.
    • הם לא מקובצים, או שהם מקובצים לפי עמודות.
  • ‫ORDER-BY ו-SORT: רק כש-ORDER-BY או SORT נמצאים בתוצאות הסריקה של עמודות שאליהן ניגשים מהמנוע מבוסס-העמודות.

  • ‫LIMIT: רק אם האופרטור נמצא בתחילת השאילתה של סריקה עמודית, ולפני האופרטורים SORT או GROUP BY.

  • ‫INNER HASH JOIN רק אם המפתחות שבהם משתמשים הם עמודות ולא נעשה שימוש במאפייני join.

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

  • שאילתות סינון עם ביטויי JSON.

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

איך משתמשים במנוע מבוסס-העמודות

כדי להשתמש במנוע מבוסס-העמודות במכונה של AlloyDB, מבצעים את השלבים הכלליים הבאים:

  1. מפעילים את המנוע במכונה.

    הפעלת המנוע היא פעולה חד-פעמית וצריך להפעיל מחדש את המכשיר.

  2. מוסיפים עמודות למאגר העמודות.

    כדי להוסיף עמודות למאגר העמודות, משתמשים באחת מהשיטות הבאות:

  3. אתם יכולים לעקוב אחרי מה שנמצא במאגר העמודות באמצעות התצוגה g_columnar_relations, ואחרי שמוסיפים עמודות, אתם יכולים להשתמש בהצהרה EXPLAIN כדי לאמת את השימוש במנוע מבוסס-העמודות בשאילתות SQL.

הוראות מפורטות לשימוש במנוע מבוסס-העמודות מופיעות במאמר הגדרת המנוע מבוסס-העמודות.

אילו נתונים אפשר להוסיף למאגר העמודות

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

סוגי נתונים נתמכים

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

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

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

המנוע מבוסס-העמודות תומך רק בעמודות עם סוגי הנתונים המובְנים הבאים:

  • array
  • bigint
  • boolean
  • bytea
  • char
  • date
  • decimal
  • double precision
  • enum
  • float4
  • float8
  • integer
  • json
  • jsonb
  • numeric
  • real
  • serial
  • short
  • smallint
  • text
  • timestamp
  • timestamptz
  • uuid
  • varchar
  • vector

המנוע מבוסס-העמודות מתעלם מכל ניסיון להוסיף באופן ידני עמודות עם סוגי נתונים לא נתמכים למאגר העמודות.

מקורות נתונים לא נתמכים

המנוע מבוסס-העמודות לא תומך בטבלאות או בתצוגות מהותיות עם המאפיינים הבאים כמקורות נתונים:

  • טבלאות מחולקות למחיצות (Partitions) שהן לא עלים

  • טבלאות זרות

מגבלות המנוע מבוסס-העמודות

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

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

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

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

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