10 אוגוסט 2017

PostgreSQL 10 בטא 3 שוחררה לאוויר!

קבוצת הפיתוח העולמית PostgreSQL שמחה להודיע על הזמינות של PostgreSQL 10 בטא 3.

זוהי גירסת הבטא השניה של הגירסה החדשה 10 של PostgreSQL. אנא הורידו ובדוקו את קוד הבטא ביישומים שלכם ודיווחו על כל בעיה שתימצא.

 

 

Physical Log Streaming Replication - PLSR

יש כמה רמות של WAL:

  • minimal
  • replica (עד 9.6 היה hot_standb)
  • logical

ל PLSR מתאים 2 - minimal ו logical, אבל גם מספיק לקבוע את replica.

minimal הוגדר כברירת מחדל, אך זה לא מספיק ליישום replication.
 

יתרונות:

הקדמה ל PostgreSQL replication

זהו חלק השני של הסיפור הקטן שלי על PostgreSQL. את חלק הראשון עדין לא סיימתי ואמשיך לפרסם מאמרים נוספים בהמשך.

 

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

במאמר זה אנסה לסקור את סוגי replication ב PostgreSQL.

 

הגדרה

Replication - זהו מנגנון של התאמת התוכן של מספר עותקים של האובייקט (למשל, את תוכנו של מסד הנתונים).

שינוי הגדרות של השרת (המשך)

מאגר עבור אובייקטים זמניים: temp_buffers

משתשמים בעיקר עבור טבלאות זמניות.

 

max_prepared_transactions - מספר של PREPARED TRANSACTIONS

אפשר להשאיר את ברירת המחדל - 5.

 

משך הזמן, באלפיות שנייה, שבמהלכו התהליך יתעכב אשר עבר את vacuum_cost_delay.

אם יש לך טבלה גדולה, וישנן הרבה פעולות כתיבה מקבילות, אתה יכל להזדקק בפונקציה אשר מפחיתה את העלות של I/O עבור VACUUM, בכך שהיא מעריכה אותו לאורך זמן.

כדי לאפשר פונקציונליות זו, אתה צריך להעלות את הערך של vacuum_cost_delay מעל 0. תשתמשו בערך סביר של 50 עד 200 ms.

זכרון עבור פקודת VACUUM

maintenance_work_mem - פרמטר זה מגידר את כמות הזיכרון עבור פקודות:

VACUUM, ANALYZE, CREATE INDEX והוספת מפתחות זרים.

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

אפשר לקבוע את ערך בין 50 ל 75% ביחס לגודל של טבלה או אינדקס הכי גדולים.

א כאשר אי אפשר לקבוע במדוייק, מ -32 עד 256 MB.

חייבים לקבוע ערך יותר גדול מאשר work_mem. ערך גדול מדי יגרום ל swappingי

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

 

פעם הבאה נדבר על temp_buffers.

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

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

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

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

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

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

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

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

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

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

אל תשתמשו בהגדרות ברירת המחדל

מהקופסה PostgreSQL מוגדר בדרך כזאת, שאפשר להריץ אותו כמעט בכל מחשב והוא לא יפריע במיוחד לאפליקציות אחרות.

זה מתיחס במיוחד לשימוש בזכרון.

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

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

בחבילת הפצה PostgreSQL לצערי לא תמצאו קבצים עם הגדרות "מומלצות".

ובכלל, ליצור קבצים כאלה די מסובך, כי הגדרות אופטימליות של התקנת מסויימת של המוצר יושפעו ע"י:

סקירה קטנה על PostgreSQL למתחילים

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

תגובות אחרונות