זיכרון מיון תוצאת השאילתה work_mem

מגדיר את הכמות המקסימאלית של זיכרון RAM פעולה אחת של מיון, אגרגציה וכו' יכולה לתפוס.

זה לא הזיכרון המשותף, work_mem מתוקצב באופן נפרד עבור כל פעולה (מאחד עד מספר פעמים לבקשה).

ערך סביר נקבע כדלקמן:

הסכום הזמין של RAM (אחרי שמופחתים מהזיכרון כל מה שדרוש ליישומים אחרים ואת shared_buffers) מחולק במספר המרבי של בקשות מקבילות שמוכפל במספר הממוצע של פעולות בבקשה אשר הדורשים את הזיכרון.

אם קיבולת הזיכרון לא מספיקה כדי למיין תוצאה כלשהי, אז תהלי ישתמש בקבצים זמניים.

אם קיבולת הזיכרון היא גדולה מדי, זה יכול להוביל ל swapping.

קיבולת הזיכרון מוגדרת על ידי פרמטר work_mem בקובץ postgresql.con לפי יחיד של 1 KB.

ערך ברירת המחדל - 1024 MB. הערך הראשוני עבור הפרמטר יכולה להיות 2-4% של הזיכרון הזמין.

עבור יישומי אינטרנט בדרך כלל מגדירים ערים נמוכים של work_mem, שכן בדרך כלל יש הרבה בקשות, אך הן פשוטות, לרוב מספיק מ -512 ל -2048 KB.

מצד שני, יישומים עבור תמיכה בקבלת החלטות עם מאות עמודות בכל בקשה ועשרות מיליוני עמודות שורות לעיתים קרובות דורשים work_mem כ -500 MB.

עבור מסדי נתונים המשמשים לשתי מטרות פרמטר זה יכול להיות מוגדר עבור כל בקשה בנפרד, תוך שימוש בהגדרות session.

לדוגמה, כשזיכרון 1-4 GB מומלץ להגדיר 32-128 MB.

בבלוג הבא נדבר על temp_buffers