סקירה כללית של מנוע מבוסס-עמודות ב-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.3.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.3.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.3.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 בקונטיינר וגם ל-AlloyDB Omni באשכול Kubernetes. מידע נוסף על יחידות מידה זמין במאמר יחידות משאבי זיכרון. -
STORAGE_CLASS_NAME: השם של סוג האחסון של נפח המטמון המהיר במיוחד – לדוגמה,local-storage.
מכשירים ייעודיים
כברירת מחדל, מטמון האחסון של מנוע העמודות חולק את אותם מכשירים כמו מטמון הדיסק של AlloyDB Omni. עם זאת, אפשר להגדיר את מנוע מבוסס-העמודות כך שישתמש במכשירים ייעודיים משלו למטמון האחסון, בגלל הסיבות הבאות:
- אין צורך במטמון דיסק כי האחסון הראשי כבר נמצא בדיסקים מסוג SSD עם ביצועים גבוהים. בתרחיש הזה, אתם יכולים ליצור מטמון אחסון של מנוע עמודות בלי להקצות מקום למטמון דיסק.
- אתם רוצים להשתמש במדיה שונה לאחסון של מטמון הדיסק ומטמון מנוע העמודות. לדוגמה, יכול להיות שתרצו להשתמש ב-SSD רגיל למטמון הדיסק וב-NVMe SSD עם ביצועים גבוהים יותר למטמון של מנוע מבוסס-עמודות.
שימוש בנפח כללי
כדי להגדיר מכשיר ייעודי למטמון של אחסון מנוע מבוסס-עמודות, משנים את קובץ המניפסט DBCluster כדי להוסיף את המאפיין columnarSpillToDisk לקטע features. בתוך columnarSpillToDisk, אפשר לציין genericVolume עם storageClass שמפנה אל האחסון שרוצים להשתמש בו בשביל המטמון של מנוע העמודות הייעודי.
הדוגמה הבאה מראה איך להגדיר מכשיר ייעודי בנפח 50Gi למטמון אחסון של מנוע מבוסס-עמודות באמצעות סוג אחסון (storage class) בשם local-ssd:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "18.3.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.
הפעלת הצטרפות וקטורית
למנוע מבוסס-עמודות יש תכונה של צירוף וקטורי שיכולה לשפר את הביצועים של צירופים על ידי החלת עיבוד וקטורי על שאילתות שעומדות בדרישות.
אחרי שמפעילים את ההצטרפות הווקטורית, מתכנן השאילתות של 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 בשם הטבלה או התצוגה החומרית שרוצים לרענן באופן ידני.
השבתת מנוע מבוסס-עמודות
כדי להשבית את מנוע Columbar במכונה, מגדירים את הדגל 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.3.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "off"
מחליפים את CLUSTER_NAME בשם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שהצהרתם עליו כשיצרתם אותו.
המאמרים הבאים
אפשר לנסות את ה-Codelab איך מאיצים שאילתות של ניתוח נתונים באמצעות מנוע מבוסס-עמודות ב-AlloyDB Omni.