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

בוחרים גרסה של מאמרי העזרה:

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

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

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

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

שרת יחיד

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

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

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

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

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

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

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

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

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

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

שרת יחיד

כדי להגדיר את הדגל 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

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

שרת יחיד

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

מכשירים ייעודיים

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

הקצאת דיסקים ויצירת מערכת קבצים

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

מערכות הפעלה שהן לא Linux (כמו macOS ו-Windows)

ב-macOS או ב-Windows, השתמשו בנפח Docker בעל שם למטמון האחסון העמודתי כדי להבטיח ביצועים אופטימליים.

  1. יוצרים אמצעי אחסון בעל שם:

    docker volume create COLUMNAR_CACHE_VOLUME

    מחליפים את COLUMNAR_CACHE_VOLUME בשם של אמצעי האחסון, לדוגמה, omni-columnar-cache.

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

Linux

כדי להקצות דיסקים וליצור מערכת קבצים למטמון האחסון של המנוע מבוסס-העמודות ב-AlloyDB Omni, צריך ליצור מערכת קבצים בדיסק אחד או בכמה דיסקים ולטעון אותה בתוך קונטיינר עם AlloyDB Omni. בנוסף, אתם יכולים להשתמש בכלי שירות כמו mdadm או lvm כדי לאחד את הקיבולת של כמה דיסקים ולהשתמש בכל מערכת קבצים. בשלבים הבאים מוסבר איך להשתמש ב-lvm וב-ext4 במכונה של Compute Engine עם מערכת ההפעלה Ubuntu, באמצעות כונני NVMe SSD.

  1. יוצרים קבוצת אמצעי אחסון מכל המכשירים הפיזיים הזמינים:

          nvme_prefix="STORAGE_PREFIX"
          nvme_list=$(ls "$nvme_prefix"*)
          sudo vgcreate VOLUME_GROUP ${nvme_list}

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

    • ‫STORAGE_PREFIX: הקידומת של הנתיב לדיסקים המקומיים של היעד שמחוברים למכונה וירטואלית באמצעות ממשק NVMe (זיכרון לא נדיף מהיר). לדוגמה, ב- Google Cloud, הנתיבים של מכשירי NVMe תמיד מתחילים ב-/dev/nvme0n.
    • ‫VOLUME_GROUP: השם של קבוצת אמצעי האחסון שבה משולבים כונני ה-SSD, לדוגמה omni-disk-cache-volume.
  2. כדי ליצור אמצעי אחסון לוגי מהקיבולת הפנויה של קבוצת אמצעי האחסון מהשלב הקודם, משתמשים בפקודה הבאה:

            sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    מחליפים את LOGICAL_VOLUME בשם של אמצעי אחסון לוגי שמנוהל כמחיצה על ידי ה-LVM, לדוגמה omni_disk_cache_device.

  3. יוצרים את מערכת הקבצים ext4 בנפח הלוגי. במקרה הצורך, אפשר לציין אפשרויות אחרות של ext4 בכפוף לאבטחת הנתונים.
          sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. כדי ליצור ספרייה שמשמשת כנקודת טעינה במכונה המארחת ולטעון את מערכת הקבצים, משתמשים בפקודה הבאה:

          sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
          sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY

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

טעינת ספריית המטמון של האחסון מבוסס-העמודות בתוך AlloyDB Omni

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

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

  • לנתיבי מארח ב-Linux:

    -v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  • לווליומים עם שם (לא ב-Linux):

    -v COLUMNAR_CACHE_VOLUME:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER

פקודת Docker לדוגמה באמצעות ווליום בעל שם:

  sudo docker run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v COLUMNAR_CACHE_VOLUME:/var/lib/alloydb/columnar_cache
-d google/alloydbomni

במאמר התאמה אישית של התקנת AlloyDB Omni מוסבר איך מתקינים את AlloyDB Omni מקובץ אימג' של Docker ואיך מתאימים אותו אישית.

כדי לטעון את OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY בתוך קונטיינר Docker שבו פועל AlloyDB Omni, משתמשים בפקודה הבאה:

Docker

  sudo docker run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni

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

  • ‫CONTAINER_NAME: השם שיוקצה לקונטיינר החדש של AlloyDB Omni, לדוגמה my-omni.
  • ‫PASSWORD: הסיסמה של מנהל המערכת ברמה הבסיסית (root) של מסד הנתונים ב-PostgreSQL.
  • ‫DATA_DIR: הנתיב של מערכת הקבצים שרוצים ש-AlloyDB Omni ישתמש בו לספריית הנתונים.
  • ‫CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: ספריית המטמון בתוך מאגר AlloyDB Omni שממופה לנקודת הטעינה במכונה המארחת. לדוגמה, על סמך הערך של ספריית המטמון בתוך המאגר, /omni_disk_cache_directory, בדומה ל-OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, או /disk/cache/inside/container.

Podman

  podman run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni

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

  • ‫CONTAINER_NAME: השם שיוקצה לקונטיינר החדש של AlloyDB Omni, לדוגמה my-omni.
  • ‫PASSWORD: הסיסמה של מנהל המערכת ברמה הבסיסית (root) של מסד הנתונים ב-PostgreSQL.
  • ‫CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: ספריית המטמון בתוך מאגר AlloyDB Omni שממופה לנקודת הטעינה במכונה המארחת. לדוגמה, על סמך הערך של ספריית המטמון בתוך המאגר, /omni_columnar_storage_cache_directory, בדומה ל-OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, או /disk/cache/inside/container.

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

Docker

  sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  sudo docker exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  

Podman

  sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  sudo podman exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  

הפעלת מטמון האחסון מבוסס-העמודות של AlloyDB Omni שפועל בקונטיינר

כדי להפעיל את מטמון האחסון העמודתי של AlloyDB Omni במכשירים ייעודיים למסד הנתונים, מגדירים את הפרמטרים המתאימים של Grand Unified Configuration ‏ (GUC) אחרי שמוודאים שאפשר לגשת לספריית המטמון שנטענה מתוך מאגר Docker.

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

    ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
    

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

  2. מגדירים את גודל המטמון של האחסון:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

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

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

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

מכשירים משותפים

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

כדי להגדיר את מטמון האחסון במכשירים משותפים:

  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

הפעלת שאילתת איחוד (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 Omni מקצה שרשור אחד לתכונה "שאילתת איחוד (join) וקטורית". כדי להגדיל את מספר ה-threads שזמינים לתכונה הזו, אפשר להגדיר ערך גדול יותר לדגל 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.

שרת יחיד

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

  1. מריצים את פקודת PostgreSQL‏ ALTER SYSTEM:
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 כשהתקנתם אותו.

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