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

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

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

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

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

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

הפעלת מטמון הדיסק של AlloyDB Omni

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

  1. הקצאת דיסקים ויצירת מערכת קבצים
  2. העלאת ספריית המטמון בתוך AlloyDB Omni
  3. הפעלת מטמון הדיסק של AlloyDB Omni ב-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_DISK_CACHE_DIRECTORY
    sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY

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

טעינת ספריית המטמון בתוך AlloyDB Omni

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

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

כדי לטעון את OMNI_DISK_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_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH \
        -d google/alloydbomni
      

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

  • ‫CONTAINER_NAME: השם שיוקצה לקונטיינר החדש של AlloyDB Omni, לדוגמה my-omni.
  • ‫PASSWORD: הסיסמה של מנהל המערכת ברמה הבסיסית (root) של מסד הנתונים ב-PostgreSQL.
  • ‫DATA_DIR: הנתיב של מערכת הקבצים שרוצים ש-AlloyDB Omni ישתמש בו לספריית הנתונים.
  • ‫CACHE_DIRECTORY_PATH: ספריית המטמון בתוך מאגר AlloyDB Omni שממופה לנקודת הטעינה במכונה המארחת. לדוגמה, על סמך הערך של ספריית המטמון בתוך המאגר, /omni_disk_cache_directory, בדומה ל-OMNI_DISK_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_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH \
        -d docker.io/google/alloydbomni
      

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

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

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

Docker

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

Podman

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

הפעלת מטמון הדיסק

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

  1. מתחברים למסד הנתונים בתור SUPERUSER.

    Docker

    sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgres

    Podman

    sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgres
  2. מגדירים את הדגלים omni_disk_cache_enabled ו-omni_disk_cache_directory של Grand Unified Configuration‏ (GUC).

    ALTER SYSTEM SET omni_disk_cache_enabled=on;
    ALTER SYSTEM SET omni_disk_cache_directory='/OMNI_DISK_CACHE_DIRECTORY';
    
  3. ‫(אופציונלי) כברירת מחדל, AlloyDB Omni משתמש בכל המקום הפנוי במערכת הקבצים. אם צריך, אפשר לשנות את זה על ידי עדכון הדגל omni_disk_cache_file_size GUC.

    ALTER SYSTEM SET omni_disk_cache_file_size=SIZE_IN_MB;
    

    מחליפים את SIZE_IN_MB בנפח האחסון (במגה-בייט) שרוצים להקצות למטמון הדיסק.

  4. מפעילים מחדש את AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

אימות ההגדרות של מטמון הדיסק

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

בנוסף, אתם יכולים לבדוק אם מטמון הדיסק של AlloyDB Omni פתוח.

כדי לאמת את הגדרת מטמון הדיסק של AlloyDB Omni, משתמשים בפקודה הבאה.

Docker

sudo docker logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"

Podman

sudo podman logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"

אם מטמון הדיסק מוגדר בצורה נכונה, ההודעה Successfully opened omni disk cache ... מוצגת ביומנים.

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

* מידע על ניהול זיכרון אוטומטי * מידע על דיסקים מסוג SSD מקומי * יצירה והפעלה של מכונה וירטואלית