עשר טיפים לכיוון PostgreSQL לביצועים גבוהים במסדי נתונים

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

טיפים מרכזיים להגדרת הפרמטרים

1. הגדרות זיכרון

מנגנון שיתוף

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

להפנים: מסמך תיעוד שיתוף פוסטגרסקיול

Plain Text

 

shared_buffers = 1GB  # Set to 25-40% of system memory

זיכרון עבודה

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

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

Plain Text

 

work_mem = 16MB  # Adjust based on workload

2. גודל מטמון אפקטיבי

זהו הגדרה חשובה לתכנון שאילתות, מכיוון ש-PostgreSQL משתמש ב־effective_cache_size כדי להעריך כמה זיכרון זמין עבור המטמון של הדיסק. כדאי להגדיר אותו בכ-75% מזיכרון המערכת הכולל.

הפנייה: מסמך גודל מטמון אפקטיבי של PostgreSQL

Plain Text

 

effective_cache_size = 3GB

3. הגדרות נקודת ביקורת

כיוון ההגדרות של נקודת ביקורת עשוי לעזור להפחתת עומס I/O של הדיסק ולשפר את הביצועים בתקופות של פעילות כתיבה גבוהה. שקול להתאים את checkpoint_timeout ואת checkpoint_completion_target.

הפנייה: מסמך הגדרות נקודת ביקורת של PostgreSQL

Plain Text

 

checkpoint_timeout = 15min  # Adjust based on workload
checkpoint_completion_target = 0.7  # Set to balance write load

4. כיוון אוטובקיום

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

Plain Text

 

autovacuum_vacuum_threshold = 50

autovacuum_analyze_threshold = 50

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

5. תכנון שאילתות עם EXPLAIN ו־ANALYZE

כלי ה־EXPLAIN וה־ANALYZE של PostgreSQL מאפשרים לך להבין כיצד שאילתות מבוצעות. ניתן להשתמש בפקודות אלו כדי לזהות בקבוקי צוואר ולייעל שאילתות שרצות איטיות.

הפנייה: מסמך הסבר של PostgreSQL EXPLAIN

Plain Text

 

EXPLAIN ANALYZE SELECT * FROM my_table WHERE condition;

6. גיבוש חיבורים

למערכות שמתמודדות עם מספר רב של חיבורים סצניים, שימוש בכלי גיבוש חיבורים כמו PgBouncer יכול להפחית משמעותית את העומס. זה עוזר ל־PostgreSQL לנהל משאבים ביעילות.

הפנייה: מסמך הסבר של PgBouncer

Plain Text

 

pgbouncer.ini  # Example configuration for PgBouncer

7. חלוקת טבלאות גדולות

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

הפנייה: מסמך הסבר של החלוקה ב־PostgreSQL

SQL

 

CREATE TABLE measurement (

    city_id         int,

    logdate         date,

    peaktemp        int,

    unitsales       int

) PARTITION BY RANGE (logdate);

8. שיטות מיטוב אינדקסים

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

הפנייה: מסמך הסבר של אינדקסים ב־PostgreSQL

SQL

 

CREATE INDEX idx_measurement_logdate ON measurement (logdate);

9. ביצוע שאילתות מקביליות

השתמש בביצועי שאילתות מקבילות של PostgreSQL כדי להאיץ את ביצועי השאילתות על מערכות מרובות ליבות. כוון את max_parallel_workers ואת max_parallel_workers_per_gather כדי לאפשר זאת.

הפניה: תיעוד על ביצועי שאילתות מקבילות ב־PostgreSQL

Plain Text

 

max_parallel_workers = 8
max_parallel_workers_per_gather = 4

10. רישום וניטור

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

הפניה: תיעוד על רישום ב־PostgreSQL

Plain Text

 

log_min_duration_statement = 500ms  # Log queries that take more than 500ms

השתמש בכלים כמו pg_stat_statements כדי לנטר את ביצועי השאילתות ולזהות אילו שאילתות זקוקות לאופטימיזציה.

מסקנה

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

Source:
https://dzone.com/articles/top-10-postgresql-tuning-tips-for-high-performance