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

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

בדף הזה מוסבר איך להקצות, להגדיר ולהשתמש במטמון הדיסק ב-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: התווית של הצומת עבור המפתח שמשמש כאינדיקטור מיקום ומאפשר חלוקה שווה של ה-Pod באשכול – לדוגמה, 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 פועל בצומת הזה.

כשמסירים פוד מצומת, הנתונים ב-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 ... תוצג ביומנים.

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

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