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

בחירה של גרסת המסמך:

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

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

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

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

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

כדי להפעיל את מטמון הדיסק של 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_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_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_INSIDE_CONTAINER
-d docker.io/google/alloydbomni

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

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

    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. כדי להגדיר את הערך של הפרמטרים, משתמשים בפקודות הבאות במסד הנתונים של AlloyDB Omni:

            alter system set omni_disk_cache_enabled=on;
            alter system set omni_disk_cache_directory='/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER';
          
  3. כברירת מחדל, AlloyDB Omni משתמש בכל השטח הפנוי במערכת הקבצים. אם צריך, אפשר לשנות את ערך ברירת המחדל באמצעות הפרמטר omni_disk_cache_file_size.

          alter system set omni_disk_cache_file_size=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 ...` מופיעה ביומנים.

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