הגדרת מנוע מבוסס-עמודות ב-AlloyDB Omni

בחירת גרסת תיעוד:

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

סקירה כללית של מנוע מבוסס-עמודות של AlloyDB מופיעה במאמר סקירה כללית של מנוע העמודות של AlloyDB Omni.

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

כדי להשתמש במנוע מבוסס-עמודות במכונה, מגדירים את הדגל google_columnar_engine.enabled של המכונה לערך on.

השלבים שבהם משתמשים כדי להגדיר את הדגל הזה במופע תלויים בשאלה אם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.

שרת יחיד

כדי להגדיר את google_columnar_engine.enabled ל-on, פועלים לפי השלבים הבאים:

  1. מריצים את הפקודה ALTER SYSTEM PostgreSQL:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. אם רוצים לשנות את ההגדרות של מנוע העמודות, צריך לפעול לפי ההוראות שבקטע הבא לפני שמפעילים מחדש את שרת מסד הנתונים. אחרת, משלימים את השלב הבא כדי להפעיל מחדש את שרת מסד הנתונים.

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

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

‏Kubernetes

כדי להגדיר את הדגל google_columnar_engine.enabled לערך on, משנים את מניפסט אשכול מסד הנתונים כדי להוסיף את המאפיין parameters לקטע primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.7.1"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

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

הגדרת הגודל של מאגר העמודות

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

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

הגדרת הזיכרון

אפשר להגדיר את ההקצאה לגודל קבוע באמצעות הדגל google_columnar_engine.memory_size_in_mb.

השלבים שבהם משתמשים כדי להגדיר את הדגל הזה במופע תלויים בשאלה אם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.

שרת יחיד

כדי להגדיר את הדגל google_columnar_engine.memory_size_in_mb במופע:

  1. מגדירים את הזיכרון על ידי הפעלת הפקודה ALTER SYSTEM PostgreSQL:

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    מחליפים את COLUMN_MEMORY_SIZE בגודל החדש של אחסון העמודה, במגה-בייט – לדוגמה, 256.

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

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

‏Kubernetes

כדי להגדיר את הדגל google_columnar_engine.memory_size_in_mb, משנים את מניפסט אשכול מסד הנתונים כדי להוסיף את המאפיין parameters לקטע primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.7.1"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שהצהרתם עליו כשיצרתם אותו.
  • COLUMN_MEMORY_SIZE: הגודל החדש של האחסון בעמודה, במגה-בייט. לדוגמה, 256.

הגדרת מטמון אחסון

לפני שמגדירים את מטמון האחסון, צריך להפעיל את מטמון הדיסק של AlloyDB Omni.

השלבים שבהם משתמשים כדי להגדיר את הדגל הזה במופע תלויים בשאלה אם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.

שרת יחיד

  1. מגדירים את מטמון האחסון באופן הבא:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    מחליפים את STORAGE_CACHE_SIZE בגודל של מטמון האחסון הרצוי, במגה-בייט. כברירת מחדל, 5% ממטמון הדיסק מוקצים למנוע העמודות. הערך המקסימלי המותר לסימון הזה הוא 50% ממטמון הדיסק הכולל או 1,000 * google_columnar_engine.memory_size_in_mb, לפי הנמוך מביניהם.

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

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

‏Kubernetes

כדי להפעיל את מטמון האחסון במסד הנתונים, משנים את מניפסט אשכול מסד הנתונים כדי להוסיף את המאפיין columnarSpillToDisk לקטע features בקטע primarySpec:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "15.7.1"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
      ultraFastCache:
        cacheSize: ULTRAFAST_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"
...

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שהצהרתם עליו כשיצרתם אותו.
  • STORAGE_CACHE_SIZE: גודל מטמון האחסון העמודתי, לדוגמה 5Gi. אם לא מציינים ערך בשדה הזה, מוקצים למנוע העמודות 5% ממטמון הדיסק כברירת מחדל.
  • ULTRAFAST_CACHE_SIZE: גודל המטמון, לדוגמה 100Gi. הערך חייב להיות גדול מ-shared_buffers. השדה הזה הוא אופציונלי. אם לא מציינים את הערך של השדה הזה, AlloyDB Omni משתמש בכל השטח שנותר בדיסק. זה חל גם על AlloyDB Omni בקונטיינר וגם על AlloyDB Omni באשכול Kubernetes. מידע נוסף על יחידות מידה זמין במאמר יחידות משאבי זיכרון.
  • STORAGE_CLASS_NAME: השם של סוג האחסון של נפח המטמון המהיר במיוחד, לדוגמה local-storage.

הפעלה של הצטרפות וקטורית

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

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

כדי להפעיל את התכונה 'צירוף וקטורי' במופע, מגדירים את התכונה הניסיונית google_columnar_engine.enable_vectorized_join של המופע לערך on.

כדי להגדיר את הדגל הזה במופע, מריצים את הפקודה ALTER SYSTEM של PostgreSQL:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

כברירת מחדל,‏ AlloyDB Omni מקצה שרשור אחד לתכונה של צירוף וקטורי. כדי להגדיל את מספר השרשורים שזמינים לתכונה הזו, צריך להגדיר את הדגל google_columnar_engine.vectorized_join_threads לערך גבוה יותר. הערך המקסימלי הוא cpu_count * 2.

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

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

כדי לרענן את מנוע העמודות באופן ידני, מריצים את שאילתת ה-SQL הבאה:

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

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

השבתת מנוע מבוסס-עמודות

כדי להשבית את מנוע מבוסס-העמודות במכונה, מגדירים את הדגל google_columnar_engine.enabled לערך off.

השלבים שבהם משתמשים כדי להגדיר את הדגל הזה במופע תלויים בשאלה אם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.

שרת יחיד

כדי להגדיר את google_columnar_engine.enabled ל-off, פועלים לפי השלבים הבאים:

  1. מריצים את הפקודה ALTER SYSTEM PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. כדי שהשינוי בפרמטרים של ההגדרה ייכנס לתוקף, צריך להפעיל מחדש את הקונטיינר הפועל עם AlloyDB Omni.

Docker

כדי להפעיל מחדש קונטיינר של AlloyDB Omni, מריצים את הפקודה docker container restart:

  sudo docker restart CONTAINER_NAME

מחליפים את CONTAINER_NAME בשם שהקציתם לקונטיינר AlloyDB Omni כשהתקנתם אותו.

Podman

כדי להפעיל מחדש קונטיינר של AlloyDB Omni, מריצים את הפקודה podman container start:

  sudo podman restart CONTAINER_NAME

מחליפים את CONTAINER_NAME בשם שהקציתם לקונטיינר AlloyDB Omni כשהתקנתם אותו.

‏Kubernetes

כדי להגדיר את הדגל google_columnar_engine.enabled לערך off, משנים את מניפסט אשכול מסד הנתונים כדי להוסיף את המאפיין parameters לקטע primarySpec:

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "15.7.1"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

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

פתרון בעיות במנוע מבוסס-עמודות

פתרון השגיאה insufficient shared memory

אם מריצים את AlloyDB Omni בלי מספיק זיכרון משותף לשימוש במנוע העמודות, יכול להיות שתופיע השגיאה הבאה:

Insufficient shared memory for generating the columnar formats.

כדי לפתור את הבעיה הזו, צריך לציין את כמות הזיכרון המשותף שזמין למאגר AlloyDB Omni. האופן שבו עושים את זה משתנה בהתאם למערכת ההפעלה של המארח.

Linux

מגדילים את הגודל של מחיצת /dev/shm במחשב המארח, באמצעות טכניקה כמו עריכת קובץ /etc/fstab.

macOS

מתקינים קונטיינר חדש של AlloyDB Omni, מציינים ערך גדול יותר של זיכרון משותף לדגל --shm-size.

תיקון של עמודות שלא מתמלאות

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

  • העמודות שרוצים להוסיף כוללות סוג נתונים שלא נתמך.

  • הדרישות של המנוע מבוסס-העמודות לא מתקיימות.

כדי לפתור את הבעיה, אפשר לנסות את הפתרונות הבאים:

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

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