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

כברירת מחדל, הפרמטר shared_buffers מוגדר לערך 0, שהוא ערך מיוחד שמגדיר את הגבול העליון של גודל מטמון shared buffers ל-80% מזיכרון המערכת. ב-AlloyDB Omni, ההגבלה מתחילה ב-10% מהתקרה העליונה של shared_buffers. אם shared_buffers מוחלף בערך מותאם אישית, AlloyDB Omni מתייחס לערך הזה כאל הגבול העליון של הגודל של shared_buffers, ומתחיל עם הגודל המותאם אישית שצוין.
כדי לציין גודל מותאם אישית, עורכים את קובץ התצורה postgresql.conf. לדוגמה, אפשר להגדיר את shared_buffers ל-1GB באחת מהדרכים הבאות:
docker run --name CONTAINER_NAME -e INITDB_ARGS="-c shared_buffers=1GB" $imagedocker run --name CONTAINER_NAME $image -c shared_buffers=1GBמחליפים את
CONTAINER_NAMEבשם שהקציתם לקונטיינר AlloyDB Omni כשהתקנתם אותו.
אופטימיזציה של ביצועי השאילתות
ערך ברירת המחדל של הפרמטר shared_buffers מתאים לתרחישים נפוצים.
עם זאת, אפשר לשנות את הערך כדי לשפר את הביצועים.
אם בוחרים להסתמך על ערך ברירת המחדל shared_buffers כדי להסיק את הגבול העליון של מאגר הנתונים הזמני המשותף, צריך להשתמש בערך של cgroup memory.max כדי להשפיע על החישוב.
זיכרון של מנוע מבוסס-עמודות
הזיכרון הדינמי shared_buffers הוא נפרד מהזיכרון של מנוע מבוסס-עמודות. כשהמנוע מבוסס-עמודות מופעל, אפשר לחשב את הגודל הדינמי shared_buffers על ידי הפחתת כמות הזיכרון שמשמשת את המנוע מבוסס-עמודות מ-80% מהזיכרון הכולל שזמין למערכת או לקבוצת הבקרה.
דפים ענקיים
דפים גדולים משפרים את הביצועים של מסד הנתונים. AlloyDB Omni מנהל דפים גדולים באופן מפורש אם אפשר, אחרת הוא מסתמך על התכונה 'דפים גדולים שקופים' (THP) של מערכת ההפעלה. אם אף אחד מסוגי הדפים הענקיים לא נתמך, AlloyDB Omni חוזר לדף בגודל 4k ומציג אזהרה ביומני קונטיינר Docker docker logs $container_name עם הוראות ספציפיות להגדרת דפים ענקיים. הוראות להפעלת קונטיינר מפורטות במאמר תחילת העבודה עם AlloyDB Omni.
האזהרה תיראה כך:
HINT: Please either execute the all-in-one setup script:
docker run --rm --privileged $image setup-host
OR manually execute:
echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
sudo sysctl -w vm.nr_overcommit_hugepages=1048576
ניהול זיכרון אוטומטי בזמן ריצה
AlloyDB Omni עוקב כל הזמן אחרי עומס המערכת, ומשנה את צריכת הזיכרון שלו כדי לשפר את הביצועים. לדוגמה, יכול להיות שתבחינו בשינויים הבאים:
- שינוי גודל דינמי
shared_buffers
- AlloyDB Omni מגדיל את הגודל הדינמי של
shared_buffersכשצריכת הזיכרון של המערכת נמוכה, ומקטין את הגודל כשצריכת הזיכרון של המערכת גבוהה. כדי לעקוב אחרי הגודל הדינמי שלshared_buffers, משתמשים בפקודה:CREATE EXTENSION IF NOT EXISTS g_memory; SELECT g_dynamic_shared_size();
- סיום חיבור ל-PostgreSQL כשהזיכרון במערכת נמוך מאוד
- כש-AlloyDB Omni מזהה שזיכרון המערכת נמוך מאוד, הוא מנסה למחוק את חיבורי PostgreSQL שצורכים הכי הרבה זיכרון, עד שהעומס יחזור לרמה סבירה. כשאירוע כזה קורה, המערכת רושמת את הפרטים הבאים ביומנים של קונטיינר Docker:
WARNING: Sending SIGTERM to pid=xxx NSpid=xxx (VA size = xxxMB) (RSS size = xxxMB)