שינוי הגדרות של השרת - שימוש בזיכרון

buffer המשוף של השרת - shared_buffers

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

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

במקביל, אנחנו לא צריכים להגדיר ערך של shared_buffers גבוה מדי: זה לא כל הזיכרון הנחוץ עבור PostgreSQL, זה רק הגודל של הזיכרון המשותף בין תהליכי PostgreSQL אשר צריכים לביצוע פעולות אקטיביות. זה צריך לקחת חלק קטן של זיכרון RAM במחשב שלך, מאחר ו PostgreSQL מסתמך על העובדה כי מערכת ההפעלה עושה caching לקבצים אז הוא לא מנסה לעשות עבודה כפולה. בנוסף, יותר זיכרון ניתן shared_buffers, פחות ישאר למערכת ההפעלה ויישומים אחרים, מה שעלול להוביל ל swapping.

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

בבלוג הבא אספר על זיכרון למיון של תוצאת השאילתה: work_mem