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

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

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

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

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

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

כדי להגדיר את הפרמטר google_columnar_engine.enabled לערך on:

  1. פותחים את המניפסט של אשכול מסד הנתונים של DBCluster.

  2. בקטע primarySpec, מוסיפים את הפרמטר google_columnar_engine.enabled לבלוק parameters:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
    

    מחליפים את DB_CLUSTER_NAME בשם של אשכול מסד הנתונים.

  3. כדי להחיל את השינויים בפרמטרים, מנהל התזמור של RPM מפעיל מחדש את מסד הנתונים באופן אוטומטי. מחילים את המניפסט המעודכן של DBCluster באחת מהשיטות הבאות:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
    • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

    Ansible

    1. יוצרים קובץ playbook של update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • ‫SSH_USER: שם המשתמש שבו אתם משתמשים כדי להתחבר לצמתים באשכול באמצעות SSH.
      • ‫SSH_KEY_PATH: הנתיב המקומי לקובץ של מפתח ה-SSH הפרטי שמשמש להתחברות לצמתים.
    2. מריצים את ה-playbook מצומת הבקרה, ומעבירים את מפרט המשאב כמשתנה נוסף:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
      • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

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

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

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

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

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

כדי להגדיר את הפרמטר google_columnar_engine.memory_size_in_mb:

  1. פותחים את המניפסט של אשכול מסד הנתונים של DBCluster.

  2. בקטע primarySpec, מוסיפים את הגדרת המנוע מבוסס-העמודות לבלוק parameters:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
            google_columnar_engine.memory_size_in_mb: "MEMORY_SIZE_MB"
    

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

    • ‫DB_CLUSTER_NAME: שם אשכול מסד הנתונים.
    • ‫MEMORY_SIZE_MB: כמות הזיכרון, במגה-בייט, שצריך להקצות למנוע מבוסס-העמודות.
  3. כדי להחיל את השינויים בפרמטרים, מנהל התזמור של RPM מפעיל מחדש את מסד הנתונים באופן אוטומטי. מחילים את המניפסט המעודכן של DBCluster באחת מהשיטות הבאות:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
    • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

    Ansible

    1. יוצרים קובץ playbook של update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • ‫SSH_USER: שם המשתמש שבו אתם משתמשים כדי להתחבר לצמתים באשכול באמצעות SSH.
      • ‫SSH_KEY_PATH: הנתיב המקומי לקובץ של מפתח ה-SSH הפרטי שמשמש להתחברות לצמתים.
    2. מריצים את ה-playbook מצומת הבקרה, ומעבירים את מפרט המשאב כמשתנה נוסף:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
      • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

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

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

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

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

  1. פותחים את המניפסט של אשכול מסד הנתונים של DBCluster.

  2. בקטע primarySpec, מוסיפים את המאפיין columnarSpillToDisk עם cacheSize ו-localVolume.path לבלוק features:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
              localVolume:
                path: COLUMNAR_CACHE_DIR_PATH
    

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

    • ‫DB_CLUSTER_NAME: שם אשכול מסד הנתונים.
    • ‫STORAGE_CACHE_SIZE: מגבלת הגודל של מטמון האחסון של המנוע מבוסס-העמודות, לדוגמה 50Gi.
    • ‫COLUMNAR_CACHE_DIR_PATH: הנתיב של מערכת הקבצים של הספרייה הייעודית למטמון האחסון של המנוע מבוסס-העמודות, לדוגמה /mnt/disks/columnarcache.
  3. מחילים את המניפסט המעודכן של DBCluster באמצעות alloydbctl או Ansible:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
    • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

    Ansible

    1. יוצרים קובץ playbook של update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • ‫SSH_USER: שם המשתמש שבו אתם משתמשים כדי להתחבר לצמתים באשכול באמצעות SSH.
      • ‫SSH_KEY_PATH: הנתיב המקומי לקובץ של מפתח ה-SSH הפרטי שמשמש להתחברות לצמתים.
    2. מריצים את ה-playbook מצומת הבקרה, ומעבירים את מפרט המשאב כמשתנה נוסף:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
      • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

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

אם לא מציינים את localVolume.path בקטע columnarSpillToDisk, מטמון האחסון של המנוע מבוסס-העמודות משתף את אחסון המטמון בדיסק שהוגדר בקטע ultraFastCache.

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

  1. פותחים את המניפסט של אשכול מסד הנתונים של DBCluster.

  2. בקטע primarySpec, מוסיפים את המאפיינים columnarSpillToDisk ו-ultraFastCache לבלוק features:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
            ultraFastCache:
              cacheSize: ULTRAFAST_CACHE_SIZE
              localVolume:
                path: DISK_CACHE_DIR_PATH
    

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

    • ‫DB_CLUSTER_NAME: שם אשכול מסד הנתונים.
    • ‫STORAGE_CACHE_SIZE: גודל המטמון של האחסון העמודתי, לדוגמה 50Gi. אם לא מציינים ערך בשדה הזה, כברירת מחדל 5% ממטמון הדיסק מוקצים למנוע מבוסס-העמודות.
    • ‫ULTRAFAST_CACHE_SIZE: הגודל המקסימלי של מאגר המטמון המהיר במיוחד ששמור ל-AlloyDB Omni, לדוגמה 100Gi. אם המדיניות לא מוגדרת, המערכת משתמשת בכל המקום הפנוי בכונן ב-localVolume.path.
    • ‫DISK_CACHE_DIR_PATH: הנתיב לתיקייה של קובצי המטמון המהירים במיוחד, לדוגמה /mnt/disks/chillcache.
  3. מחילים את המניפסט המעודכן של DBCluster באמצעות alloydbctl או Ansible:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
    • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

    Ansible

    1. יוצרים קובץ playbook של update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • ‫SSH_USER: שם המשתמש שבו אתם משתמשים כדי להתחבר לצמתים באשכול באמצעות SSH.
      • ‫SSH_KEY_PATH: הנתיב המקומי לקובץ של מפתח ה-SSH הפרטי שמשמש להתחברות לצמתים.
    2. מריצים את ה-playbook מצומת הבקרה, ומעבירים את מפרט המשאב כמשתנה נוסף:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
      • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

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

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

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

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

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

כדי להגדיר את הפרמטר google_columnar_engine.enabled לערך off:

  1. פותחים את המניפסט של אשכול מסד הנתונים של DBCluster.

  2. בקטע primarySpec, מגדירים את הפרמטר google_columnar_engine.enabled לערך off בבלוק parameters:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "off"
    

    מחליפים את DB_CLUSTER_NAME בשם של אשכול מסד הנתונים.

  3. כדי להחיל את השינויים בפרמטרים, מנהל התזמור של RPM מפעיל מחדש את מסד הנתונים באופן אוטומטי. מחילים את המניפסט המעודכן של DBCluster באחת מהשיטות הבאות:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
    • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

    Ansible

    1. יוצרים קובץ playbook של update.yml:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • ‫SSH_USER: שם המשתמש שבו אתם משתמשים כדי להתחבר לצמתים באשכול באמצעות SSH.
      • ‫SSH_KEY_PATH: הנתיב המקומי לקובץ של מפתח ה-SSH הפרטי שמשמש להתחברות לצמתים.
    2. מריצים את ה-playbook מצומת הבקרה, ומעבירים את מפרט המשאב כמשתנה נוסף:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • ‫DEPLOYMENT_SPEC_PATH: הנתיב לספרייה של מפרט הפריסה.
      • DBCLUSTER_SPECIFICATION: הנתיב למניפסט של DBCluster ששיניתם.

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