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

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

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

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

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

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

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

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

הפעלת מטמון הדיסק בנפח גנרי

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

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

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

  1. יצרתם אשכול עם אחסון מקומי מבוסס-SSD.
  2. פרמטתם את נפח האחסון למערכת הקבצים ext4 באמצעות שלב 1 של הפעלת ההקצאה הסטטית של נפח האחסון המקומי.
  3. יצירה ידנית של נפח אחסון מתמיד לכל SSD באשכול באמצעות storageClass שמגדיר אחסון מתמיד בהתקן אחסון.

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

  1. משנים את המניפסט של אשכול מסד הנתונים כדי להוסיף את המאפיין ultraFastCache לקטע features שבקטע spec:

          apiVersion: alloydbomni.dbadmin.goog/v1
          kind: DBCluster
          metadata:
            name: CLUSTER_NAME
          spec:
            databaseVersion: "17.5.0"
            primarySpec:
              features:
                ultraFastCache:
                  cacheSize: DISK_CACHE_SIZE
                  genericVolume:
                    storageClass: "STORAGE_CLASS_NAME"
          ...
          

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

    • ‫DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.
    • ‫DISK_CACHE_SIZE: גודל המטמון, לדוגמה 100Gi. הערך חייב להיות גדול מ-shared_buffers. השדה הזה הוא אופציונלי. אם לא מציינים את הערך של השדה הזה, AlloyDB Omni משתמש בכל המקום שנותר בדיסק, גם ב-AlloyDB Omni בקונטיינר וגם באשכול Kubernetes.
    • ‫STORAGE_CLASS_NAME: השם של storage class של נפח המטמון המהיר במיוחד, לדוגמה local-storage.
  2. מחילים מחדש את המניפסט.

הפעלת מטמון הדיסק בנפח אחסון מקומי

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

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

  1. יצרתם אשכול עם אחסון מקומי מבוסס-SSD.

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

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

  1. משנים את המניפסט של אשכול מסד הנתונים כדי להוסיף את המאפיין ultraFastCache לקטע features שבקטע spec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "17.5.0"
      primarySpec:
        features:
          ultraFastCache:
            cacheSize: DISK_CACHE_SIZE
            localVolume:
              path: "LOCAL_VOLUME_PATH"
              nodeAffinity:
                required:
                  nodeSelectorTerms:
                  - matchExpressions:
                    - key: "LABEL_KEY"
                      operator: "OPERATOR_VALUE"
                      values:
                      - "LABEL_KEY_VALUE"
    ...
      

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

    • ‫CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.
    • ‫DISK_CACHE_SIZE: גודל המטמון, לדוגמה 100Gi. הערך חייב להיות גדול מ-shared_buffers. השדה הזה הוא אופציונלי. אם לא מציינים את הערך של השדה הזה, AlloyDB Omni משתמש בכל המקום שנותר בדיסק, גם ב-AlloyDB Omni בקונטיינר וגם באשכול Kubernetes.
    • ‫STORAGE_CLASS_NAME: השם של סוג האחסון.
    • ‫LOCAL_VOLUME_PATH: הנתיב לנפח האחסון המקומי, לדוגמה /mnt/disks/raid/0.
    • ‫LABEL_KEY: התווית של הצומת למפתח שמשמש כאינדיקטור למיקום ומאפשר הפצה אחידה של Pods באשכול – לדוגמה, cloud.google.com/gke-local-nvme-ssd.
    • ‫OPERATOR_VALUE: הקשר של המפתח לקבוצת ערכים, לדוגמה In. מגדירים את הפרמטר לאחת מהאפשרויות הבאות:
      • ‫In: מערך הערכים לא יכול להיות ריק.
      • ‫NotIn: מערך הערכים לא יכול להיות ריק.
      • ‫Exists: מערך הערכים חייב להיות ריק.
      • ‫DoesNotExist: מערך הערכים חייב להיות ריק.
      • ‫Gt: מערך הערכים חייב להכיל רכיב אחד, שמפורש כמספר שלם.
      • ‫Lt: מערך הערכים חייב להכיל רכיב אחד, שמפורש כמספר שלם.
    • ‫LABEL_KEY_VALUE: הערך של מפתח התווית, לדוגמה true. מגדירים את הפרמטר למערך של ערכי מחרוזת באופן הבא:
      • אם האופרטור הוא In או NotIn, מערך הערכים לא יכול להיות ריק.
      • אם האופרטור הוא Exists או DoesNotExist, מערך הערכים חייב להיות ריק.
      • אם האופרטור הוא Gt או Lt, מערך הערכים חייב להכיל רכיב אחד, שמפורש כמספר שלם.

הפעלת מטמון הדיסק בנפח זמני

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

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

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

  1. משנים את המניפסט של אשכול מסד הנתונים כדי להוסיף את המאפיין ultraFastCache לקטע features שבקטע spec, ומציינים את emptyDirVolume:

          apiVersion: alloydbomni.dbadmin.goog/v1
          kind: DBCluster
          metadata:
            name: CLUSTER_NAME
          spec:
            databaseVersion: "17.5.0"
            primarySpec:
              features:
                ultraFastCache:
                  cacheSize: DISK_CACHE_SIZE
                  emptyDirVolume: {}
            ...
          

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

    • ‫CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.
    • ‫DISK_CACHE_SIZE: גודל המטמון, לדוגמה 200Gi.
  2. מחילים מחדש את המניפסט.

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

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

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

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

  kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"

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

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

* הגדרת המנוע מבוסס-העמודות * ניהול ומעקב אחרי AlloyDB Omni