סקירה כללית על המנוע מבוסס-העמודות של AlloyDB Omni
הפעלת המנוע מבוסס-העמודות
כדי להשתמש במנוע מבוסס-עמודות במכונה, מגדירים את הדגל google_columnar_engine.enabled של המכונה לערך on.
השלבים להגדרת הדגל הזה במכונה תלויים בשאלה אם אתם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.
שרת יחיד
כדי להגדיר את google_columnar_engine.enabled לערך on, מבצעים את הפעולות הבאות:
מריצים את פקודת PostgreSQL
ALTER SYSTEM:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'אם רוצים לשנות את ההגדרות של המנוע מבוסס-העמודות, צריך לפעול לפי ההוראות בקטע הבא לפני שמפעילים מחדש את שרת מסד הנתונים. אם לא, מבצעים את השלב הבא כדי להפעיל מחדש את שרת מסד הנתונים עכשיו.
כדי שהשינוי בפרמטרים של ההגדרות ייכנס לתוקף, צריך להפעיל מחדש את הקונטיינר שפועל עם AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Kubernetes
כדי להגדיר את הדגל google_columnar_engine.enabled לערך on, משנים את המניפסט של אשכול מסד הנתונים ומוסיפים את המאפיין parameters לקטע primarySpec:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.1"
primarySpec:
parameters:
google_columnar_engine.enabled: "on"
מחליפים את CLUSTER_NAME בשם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.
הגדרת הגודל של מאגר העמודות
כשהמנוע מבוסס-העמודות מופעל במכונה, AlloyDB Omni מקצה חלק מהזיכרון של המכונה לאחסון הנתונים מבוססי-העמודות. הקצאת זיכרון RAM במהירות גבוהה למאגר העמודות מבטיחה ש-AlloyDB Omni יוכל לגשת לנתונים מבוססי-העמודות במהירות האפשרית.
הזיכרון ומטמון האחסון מייצגים יחד את הקיבולת הכוללת של המנוע מבוסס-העמודות.
הגדרת הזיכרון
אפשר להגדיר את ההקצאה לגודל קבוע באמצעות הדגל google_columnar_engine.memory_size_in_mb.
השלבים להגדרת הדגל הזה במכונה תלויים בשאלה אם אתם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.
שרת יחיד
כדי להגדיר את הדגל google_columnar_engine.memory_size_in_mb במכונה:
מגדירים את הזיכרון באמצעות הפקודה
ALTER SYSTEMשל PostgreSQL:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;מחליפים את
COLUMN_MEMORY_SIZEבגודל החדש של אחסון העמודות, במגה-בייט – לדוגמה,256.כדי שהשינוי בפרמטרים של ההגדרות ייכנס לתוקף, צריך להפעיל מחדש את הקונטיינר שפועל עם AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Kubernetes
כדי להגדיר את הדגל google_columnar_engine.memory_size_in_mb, משנים את המניפסט של אשכול מסד הנתונים ומוסיפים את המאפיין parameters לקטע primarySpec:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.1"
primarySpec:
parameters:
google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו. -
COLUMN_MEMORY_SIZE: הגודל החדש של אחסון העמודות, במגה-בייט – לדוגמה,256.
הגדרת מטמון האחסון
לפני שמגדירים את מטמון האחסון, צריך להפעיל את מטמון הדיסק של AlloyDB Omni.
השלבים להגדרת הדגל הזה במכונה תלויים בשאלה אם אתם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.
שרת יחיד
מגדירים את המטמון של האחסון באופן הבא:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;מחליפים את
STORAGE_CACHE_SIZEבגודל הרצוי של מטמון האחסון, במגה-בייט. כברירת מחדל, 5% ממטמון הדיסק מוקצים למנוע מבוסס-העמודות. הערך המקסימלי המותר לדגל הזה הוא 50% מסך כל מטמון הדיסק או 1000 * google_columnar_engine.memory_size_in_mb, הנמוך מביניהם.כדי שהשינוי בפרמטרים של ההגדרות ייכנס לתוקף, צריך להפעיל מחדש את הקונטיינר שפועל עם AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Kubernetes
כדי להפעיל את מטמון האחסון במסד הנתונים, משנים את המניפסט של אשכול מסד הנתונים ומוסיפים את המאפיין columnarSpillToDisk לקטע features שבקטע primarySpec:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.1"
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.
הפעלת שאילתת איחוד (join) וקטורית
למנוע מבוסס-העמודות יש תכונה של שאילתת איחוד (join) וקטורית, שיכולה לשפר את הביצועים של שאילתות איחוד על ידי החלת עיבוד וקטורי על שאילתות שעומדות בדרישות.
אחרי שמפעילים שאילתת איחוד וקטורית, מתכנן השאילתות של AlloyDB יכול להחיל את אופרטור שאילתת האיחוד הווקטורית במקום את אופרטור שאילתת האיחוד הרגיל של PostgreSQL. המתכנן מקבל את ההחלטה הזו על ידי השוואה בין עלות הביצוע של השאילתה בכל אחת מהשיטות.
כדי להפעיל שאילתת איחוד (join) וקטורית במכונה, מגדירים את הדגל google_columnar_engine.enable_vectorized_join של המכונה לערך on.
ALTER SYSTEM של PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
כברירת מחדל, 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.
השלבים להגדרת הדגל הזה במכונה תלויים בשאלה אם אתם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.
שרת יחיד
כדי להגדיר את google_columnar_engine.enabled לערך off, מבצעים את הפעולות הבאות:
- מריצים את פקודת PostgreSQL
ALTER SYSTEM:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- כדי שהשינוי בפרמטרים של ההגדרות ייכנס לתוקף, צריך להפעיל מחדש את הקונטיינר שפועל עם AlloyDB Omni.
Docker
כדי להפעיל מחדש קונטיינר של AlloyDB Omni, מריצים את הפקודה docker container restart:
sudo docker restart CONTAINER_NAMEמחליפים את CONTAINER_NAME בשם שהקציתם לקונטיינר של AlloyDB Omni כשהתקנתם אותו.
Podman
כדי להפעיל מחדש קונטיינר של AlloyDB Omni, מריצים את הפקודה podman container start:
sudo podman restart CONTAINER_NAMEמחליפים את CONTAINER_NAME בשם שהקציתם לקונטיינר של AlloyDB Omni כשהתקנתם אותו.
Kubernetes
כדי להגדיר את הדגל google_columnar_engine.enabled לערך off, משנים את המניפסט של אשכול מסד הנתונים ומוסיפים את המאפיין parameters לקטע primarySpec:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.1"
primarySpec:
parameters:
google_columnar_engine.enabled: "off"
מחליפים את CLUSTER_NAME בשם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.
פתרון בעיות במנוע מבוסס-עמודות
תיקון השגיאה insufficient shared memory
אם מפעילים את AlloyDB Omni בלי מספיק זיכרון משותף לשימוש של המנוע מבוסס-העמודות, יכול להיות שתופיע השגיאה הבאה:
Insufficient shared memory for generating the columnar formats.
כדי לפתור את הבעיה, אתם יכולים לציין את כמות הזיכרון המשותף שזמינה לקונטיינר של AlloyDB Omni. הדרך לעשות זאת משתנה בהתאם למערכת ההפעלה המארחת.
Linux
מגדילים את המחיצה /dev/shm של המכונה המארחת, למשל באמצעות עריכת הקובץ /etc/fstab.
macOS
מתקינים קונטיינר חדש של AlloyDB Omni, ומציינים ערך גדול יותר של זיכרון משותף בדגל --shm-size.
תיקון עמודות שלא מתמלאות בנתונים
אם העמודות לא מאוכלסות במנוע מבוסס-העמודות, יכול להיות שאחת מהסיבות הבאות נכונה:
העמודות שאתם רוצים להוסיף כוללות סוג נתונים שלא נתמך.
המנוע מבוסס-העמודות לא עומד בדרישות.
כדי לפתור את הבעיה, נסו את הפתרונות הבאים:
- מוודאים שהטבלאות או התצוגות המהותיות בשאילתה נמצאות במנוע מבוסס-העמודות.
- מאמתים את השימוש במנוע מבוסס-העמודות באמצעות ההצהרה
EXPLAIN.
המאמרים הבאים
הרשימה המלאה של דגלים לניהול מסד נתונים של מנוע מבוסס-עמודות
מבצעים את השלבים במדריך של Google CodeLab בנושא האצת שאילתות של ניתוח נתונים באמצעות מנוע מבוסס-עמודות ב-AlloyDB Omni.