أفضل 10 نصائح لضبط PostgreSQL لتحقيق أداء عالٍ لقواعد البيانات

تُعرف PostgreSQL بقوتها ومرونتها، ولكن للاستفادة القصوى منها في بيئات عالية الحركة أو البيانات الكثيفة، فإن التعديل ضروري. يوضح هذا الدليل نصائح التعديل الرئيسية التي يمكن لمسؤولي قواعد البيانات والمطورين استخدامها لتحسين أداء PostgreSQL.

نصائح التعديل الرئيسية

1. تكوين الذاكرة

مخازن مشتركة

تحكم إعدادات shared_buffers في PostgreSQL في كمية الذاكرة المستخدمة لتخزين البيانات. قم بضبط هذا إلى حوالي 25-40% من إجمالي ذاكرة النظام، ولكن تجنب الإسراف، حيث أن النظام الأساسي يحتاج أيضًا لذاكرة لتخزين الملفات.

المرجع: توثيق مخازن مشتركة PostgreSQL

Plain Text

 

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

ذاكرة العمل

للاستعلامات المعقدة أو الترتيب، تُحدد work_mem كمية الذاكرة التي يمكن استخدامها لكل اتصال لعمليات الاستعلام. قم بزيادة هذه القيمة لتحسين الأداء مع مجموعات بيانات أكبر، ولكن كن حذرًا: يتم تخصيص هذا لكل استعلام، لذا قد يؤدي زيادتها بشكل كبير إلى نفاد الذاكرة.

المرجع: توثيق ذاكرة العمل PostgreSQL

Plain Text

 

work_mem = 16MB  # Adjust based on workload

2. حجم الذاكرة التخزينية الفعالة

هذا إعداد مهم لتخطيط الاستعلام، حيث يستخدم PostgreSQL effective_cache_size لتقدير كمية الذاكرة المتاحة لتخزين المؤقت على القرص. قم بضبطه إلى حوالي 75% من إجمالي ذاكرة النظام.

المرجع: وثائق حجم التخزين المؤثر في PostgreSQL

Plain Text

 

effective_cache_size = 3GB

3. إعدادات النقطة الفرعية

يمكن أن تساعد ضبط إعدادات النقطة الفرعية على تقليل حمل الإدخال/الإخراج على القرص وتحسين الأداء أثناء فترات النشاط الكتابي العالي. انظر في ضبط 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 Parallel Query

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