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

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

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

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

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

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

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

  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 ... מוצגת ביומנים.

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