הגדרת מנוע מבוסס-עמודות ב-AlloyDB Omni

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

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

סקירה כללית על המנוע מבוסס-העמודות של AlloyDB Omni

הפעלת המנוע מבוסס-העמודות

כדי להשתמש במנוע מבוסס-עמודות במכונה, מגדירים את הדגל google_columnar_engine.enabled של המכונה לערך on.

‏Kubernetes

כדי להגדיר את הדגל google_columnar_engine.enabled לערך on, משנים את המניפסט של אשכול מסד הנתונים ומוסיפים את המאפיין parameters לקטע primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "18.4.0"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

מחליפים את CLUSTER_NAME בשם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.

הגדרת הגודל של מאגר העמודות

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

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

הגדרת הזיכרון

אפשר להגדיר את ההקצאה לגודל קבוע באמצעות הדגל google_columnar_engine.memory_size_in_mb.

‏Kubernetes

כדי להגדיר את הדגל google_columnar_engine.memory_size_in_mb, משנים את המניפסט של אשכול מסד הנתונים ומוסיפים את המאפיין parameters לקטע primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "18.4.0"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

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

  • ‫CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.
  • ‫COLUMN_MEMORY_SIZE: הגודל החדש של אחסון העמודות, במגה-בייט – לדוגמה, 256.

הגדרת מטמון האחסון

אתם יכולים להגדיר את מטמון האחסון של המנוע מבוסס-העמודות במכשירים משותפים או ייעודיים.

‏Kubernetes

מכשירים משותפים

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

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "18.4.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
      ultraFastCache:
        cacheSize: ULTRAFAST_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"
...

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

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

מכשירים ייעודיים

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

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

כדי להגדיר מכשיר ייעודי למטמון האחסון של המנוע מבוסס-העמודות, משנים את המניפסט של DBCluster כדי להוסיף את המאפיין columnarSpillToDisk לקטע features. בתוך columnarSpillToDisk, אפשר לציין genericVolume עם storageClass שמצביע על האחסון שבו רוצים להשתמש בשביל המטמון הייעודי של המנוע מבוסס-העמודות.

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

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "18.4.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"

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

  • ‫CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.
  • ‫STORAGE_CACHE_SIZE: גודל המטמון של האחסון העמודתי, לדוגמה 50Gi. אם לא מציינים ערך בשדה הזה, כברירת מחדל 5% ממטמון הדיסק מוקצים למנוע מבוסס-העמודות.
  • ‫STORAGE_CLASS_NAME: השם של סוג האחסון של נפח המטמון הייעודי של המנוע מבוסס-העמודות, לדוגמה local-ssd.
שימוש בנפח אחסון זמני

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

כדי להגדיר נפח emptyDir למטמון של האחסון העמודתי, משנים את המניפסט של DBCluster ומוסיפים את המאפיין emptyDir לקטע columnarSpillToDisk.

דוגמה להגדרת נפח זמני למטמון של האחסון העמודתי:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "17.5.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: 50Gi
        emptyDir: {}

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

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

הפעלת שאילתת איחוד (join) וקטורית

למנוע מבוסס-העמודות יש תכונה של שאילתת איחוד (join) וקטורית, שיכולה לשפר את הביצועים של שאילתות איחוד על ידי החלת עיבוד וקטורי על שאילתות שעומדות בדרישות.

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

כדי להפעיל שאילתת איחוד (join) וקטורית במכונה, מגדירים את הדגל google_columnar_engine.enable_vectorized_join של המכונה לערך on.

כדי להגדיר את הדגל הזה באשכול מסד נתונים של Kubernetes, מוסיפים את google_columnar_engine.enable_vectorized_join: "on" לקטע parameters במניפסט של DBCluster. מידע נוסף זמין במאמר הגדרת דגלים לניהול מסד נתונים של AlloyDB Omni.

כברירת מחדל, AlloyDB Omni מקצה שרשור אחד לתכונה "שאילתת איחוד (join) וקטורית". כדי להגדיל את מספר ה-threads שזמינים לתכונה הזו, אפשר להגדיר ערך גדול יותר לדגל google_columnar_engine.vectorized_join_threads. הערך המקסימלי הוא cpu_count * 2.

רענון ידני של המנוע מבוסס-העמודות

כברירת מחדל, כשהמנוע מבוסס-העמודות מופעל, הוא מרענן את מאגר העמודות ברקע.

כדי לרענן ידנית את מנוע העמודות, מריצים את שאילתת ה-SQL הבאה:

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

מחליפים את TABLE_NAME בשם של הטבלה או של התצוגה המהותית שרוצים לרענן ידנית.

השבתת המנוע מבוסס-העמודות

כדי להשבית את המנוע מבוסס-העמודות במכונה, מגדירים את הדגל google_columnar_engine.enabled לערך off.

‏Kubernetes

כדי להגדיר את הדגל google_columnar_engine.enabled לערך off, משנים את המניפסט של אשכול מסד הנתונים ומוסיפים את המאפיין parameters לקטע primarySpec:

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "18.4.0"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

מחליפים את CLUSTER_NAME בשם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.

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