סקירה כללית של מנוע מבוסס-עמודות של AlloyDB מופיעה במאמר סקירה כללית של מנוע העמודות של AlloyDB Omni.
הפעלת מנוע מבוסס-עמודות
כדי להשתמש במנוע מבוסס-עמודות במכונה, מגדירים את הדגל google_columnar_engine.enabled של המכונה לערך on.
השלבים שבהם משתמשים כדי להגדיר את הדגל הזה במופע תלויים בשאלה אם מריצים את AlloyDB Omni בקונטיינר או באשכול Kubernetes.
שרת יחיד
כדי להגדיר את google_columnar_engine.enabled ל-on, פועלים לפי השלבים הבאים:
מריצים את הפקודה
ALTER SYSTEMPostgreSQL: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 SYSTEMPostgreSQL: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% ממטמון הדיסק הכולל או 1,000 * 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 בקונטיינר וגם על AlloyDB Omni באשכול Kubernetes. מידע נוסף על יחידות מידה זמין במאמר יחידות משאבי זיכרון. -
STORAGE_CLASS_NAME: השם של סוג האחסון של נפח המטמון המהיר במיוחד, לדוגמהlocal-storage.
הפעלה של הצטרפות וקטורית
למנוע מבוסס-עמודות יש תכונה של צירוף וקטורי שיכולה לשפר את הביצועים של צירופים על ידי החלת עיבוד וקטורי על שאילתות שעומדות בדרישות.
אחרי שמפעילים את ההצטרפות הווקטורית, למתכנן השאילתות של AlloyDB יש אפשרות להחיל את אופרטור ההצטרפות הווקטורית במקום אופרטור ההצטרפות הרגיל של PostgreSQL. המתכנן מקבל את ההחלטה הזו על ידי השוואה בין העלות של ביצוע השאילתה באמצעות כל אחת מהשיטות.
כדי להפעיל את התכונה 'צירוף וקטורי' במופע, מגדירים את התכונה הניסיונית google_columnar_engine.enable_vectorized_join של המופע לערך on.
כדי להגדיר את הדגל הזה במופע, מריצים את הפקודה ALTER SYSTEM של PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
כברירת מחדל, AlloyDB Omni מקצה שרשור אחד לתכונה של צירוף וקטורי. כדי להגדיל את מספר השרשורים שזמינים לתכונה הזו, צריך להגדיר את הדגל 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, פועלים לפי השלבים הבאים:
- מריצים את הפקודה
ALTER SYSTEMPostgreSQL:
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.
המאמרים הבאים
עובדים לפי ההוראות במדריך האצת שאילתות אנליטיות באמצעות מנוע עמודות ב-AlloyDB Omni של Google CodeLab.