تحسين أداء PostgreSQL لـ Odoo: الضبط والفهرسة والمراقبة

تحسين PostgreSQL لأداء Odoo. تعلم ضبط التكوين، واستراتيجيات الفهرسة، وتحليل الاستعلام، وإدارة الفراغ، وتجميع الاتصال، ومراقبة أفضل الممارسات.

E

ECOSIRE Research and Development Team

فريق ECOSIRE

5 مارس 20265 دقائق قراءة1.0k كلمات

تحسين أداء PostgreSQL لـ Odoo: الضبط والفهرسة والمراقبة

**يمكن لمثيل PostgreSQL الذي تم ضبطه بشكل صحيح أن يحسن أوقات استجابة Odoo بمقدار 2-5x مقارنة بالإعدادات الافتراضية. ** تعود معظم مشكلات أداء Odoo إلى تكوين قاعدة البيانات - تم تصميم إعدادات PostgreSQL الافتراضية للحد الأدنى من استخدام الموارد، وليس لتشغيل نظام ERP متعدد المستخدمين.

الوجبات الرئيسية

  • تستخدم إعدادات PostgreSQL الافتراضية 128 ميجا بايت فقط من المخازن المؤقتة المشتركة - يحتاج Odoo الإنتاج إلى 25% من ذاكرة الوصول العشوائي (RAM)
  • تؤدي الفهارس المفقودة في الأعمدة التي يتم الاستعلام عنها بشكل متكرر إلى إجراء فحص كامل للجدول وبطء تحميل الصفحات
  • يؤدي تجميع الاتصالات باستخدام PgBouncer إلى تقليل حمل اتصال قاعدة البيانات بنسبة 80%
  • يمنع الفراغ والتحليل المنتظم انتفاخ الجدول ويحافظ على خطط الاستعلام مثالية

ضبط تكوين PostgreSQL

إعدادات الذاكرة

قم بتحرير postgresql.conf بالإعدادات المناسبة لجهازك. بالنسبة إلى خادم مزود بذاكرة وصول عشوائي (RAM) سعة 16 جيجابايت، قم بتعيين Shared_buffers على 4 جيجابايت (25% من إجمالي ذاكرة الوصول العشوائي)، وfact_cache_size على 12 جيجابايت (75% من إجمالي ذاكرة الوصول العشوائي)، وwork_mem على 64 ميجابايت لكل عملية، وmaintenance_work_mem على 1 جيجابايت، وwal_buffers على 64 ميجابايت.

لتخطيط الاستعلام، قم بتعيين Random_page_cost على 1.1 لتخزين SSD (الافتراضي 4.0 يفترض وجود HDD)، وeffet_io_concurrency على 200 لمحركات أقراص SSD، وdefault_statistics_target على 200 للحصول على خطط استعلام أكثر دقة.

إرشادات المقاسات:

| ذاكرة الوصول العشوائي للخادم | Shared_buffers | effact_cache_size | Work_mem | |-----------|--------------|--------------------|----------| | 4 جيجا | 1 جيجا | 3 جيجا | 16 ميجا | | 8 جيجا | 2 جيجا | 6 جيجا | 32 ميجا | | 16 جيجا | 4 جيجا | 12 جيجا | 64 ميجا | | 32GB | 8 جيجا | 24 جيجا | 128 ميجا | | 64 جيجا | 16 جيجا | 48 جيجا | 256 ميجا |

إعدادات الاتصال

قم بتعيين max_connections على عمال Odoo × 2 بالإضافة إلى المخزن المؤقت على الأقل. مع 4 عمال و2 خيوط كرون، تحتاج إلى 12 اتصالاً على الأقل. أضف اتصالات لأدوات الإدارة والمراقبة ومهام الخلفية. توفر القيمة 200 مساحة رأس مريحة.


استراتيجيات الفهرسة لـ Odoo

تحديد الفهارس المفقودة

تمكين تسجيل الاستعلام البطيء عن طريق تعيين log_min_duration_statement على 500 مللي ثانية. ثم قم بتحليل سجل الاستعلام البطيء لتحديد عمليات فحص الجدول بالكامل.

فهارس Odoo الشائعة

يقوم Odoo بإنشاء فهارس على المفاتيح الأساسية والمفاتيح الخارجية تلقائيًا. قم بإضافة فهارس على الأعمدة التي تتم تصفيتها بشكل متكرر مثل Sale_order(state)، account_move(state)، Stock_move(state)، account_move(date)، وsale_order(date_order).

تعمل الفهارس متعددة الأعمدة على تحسين مجموعات عوامل التصفية الشائعة: account_move_line(account_id، date) وstock_quant(product_id، location_id).

بالنسبة للجداول التي تحتوي على أعمدة الحالة، تكون الفهارس الجزئية للسجلات النشطة أكثر كفاءة - فهرسة فقط الصفوف التي لم يتم إلغاء الحالة فيها أو الانتهاء منها.


تحليل الاستعلام مع التحليل التوضيحي

قم بتشغيل EXPLAIN (ANALYZE, BUFFERS) على الاستعلامات البطيئة لفهم خطط التنفيذ. ابحث عن:

  • Seq Scan: مسح كامل للجدول يشير إلى وجود فهرس مفقود
  • الحلقة المتداخلة: يمكن أن تكون باهظة الثمن مع مجموعات النتائج الكبيرة
  • الفرز: عمليات الفرز داخل الذاكرة التي تتجاوز مساحة العمل، تنتقل إلى القرص
  • المخازن المؤقتة المشتركة للقراءة: القيم العالية تعني عدم تخزين البيانات مؤقتًا

** قتلة الأداء الشائعة: **

  1. فهارس مفقودة في أعمدة جملة WHERE
  2. عبارات IN الكبيرة التي تم إنشاؤها بواسطة Odoo ORM
  3. الحقول المحسوبة المخزنة تؤدي إلى إعادة الحساب عند الكتابة
  4. استعلامات تقرير معقدة تنضم إلى أكثر من 5 جداول

##الفراغ والصيانة

يقوم PostgreSQL MVCC بإنشاء صفوف ميتة عند تحديث الصفوف أو حذفها. يقوم VACUUM باستعادة هذه المساحة وتحديث الإحصائيات.

قم بتكوين الفراغ التلقائي لأحمال عمل Odoo: قم بتمكين الفراغ التلقائي مع 3 عمال كحد أقصى، ووقت قيلولة مدته 60 ثانية، وعامل مقياس الفراغ 0.05، وتحليل عامل القياس 0.02. بالنسبة للجداول عالية الكتابة (account_move_line وstock_move وmail_message)، قم بتعيين إعدادات أكثر قوة لكل جدول.

مراقبة انتفاخ الجدول عن طريق التحقق من إجمالي أحجام العلاقات وعدد الصف الميت. استخدم VACUUM FULL فقط للانتفاخ الشديد (أكثر من 50% من المساحة الميتة) وفقط أثناء نوافذ الصيانة لأنه يقفل الطاولة.


تجمع الاتصال مع PgBouncer

يقع PgBouncer بين Odoo وPostgreSQL، حيث يقوم بتجميع الاتصالات لتقليل الحمل. استخدم وضع مجمع المعاملات لـ Odoo، الذي يطلق الاتصالات بين المعاملات. قم بتعيين default_pool_size على 40 وmax_client_conn على 200. قم بتوجيه Odoo إلى منفذ PgBouncer بدلاً من PostgreSQL مباشرة.


المراقبة

المقاييس الأساسية

  • الاتصالات النشطة: يجب أن تظل أقل بكثير من الحد الأقصى للاتصالات
  • نسبة الوصول إلى ذاكرة التخزين المؤقت: يجب أن تكون أعلى من 99%
  • معدل المعاملة: خط الأساس ومراقبة الحالات الشاذة
  • عدد الاستعلامات البطيء: الاستعلامات تتجاوز الحد الخاص بك
  • تأخر النسخ المتماثل: في حالة استخدام النسخ المتماثلة المقروءة
  • استخدام القرص: معدل نمو حجم قاعدة البيانات
  • تضخم الجدول: نسبة الصف الميت لكل جدول

استخدم ملحق pg_stat_statements لتتبع أداء الاستعلام بمرور الوقت. يقوم بتسجيل عدد التنفيذ، والوقت الإجمالي، ومتوسط ​​الوقت، والصفوف التي يتم إرجاعها لكل نمط استعلام مميز.


الأسئلة المتداولة

س: كيف أعرف إذا كان PostgreSQL هو عنق الزجاجة؟

قم بتمكين تسجيل الاستعلام البطيء وتحقق من سجلات أداء Odoo. إذا كانت معظم الطلبات البطيئة تتوافق مع الاستعلامات البطيئة، فإن الضبط سيساعد. إذا كانت الاستعلامات سريعة ولكن Odoo بطيء، فهذا يعني أن الاختناق يكمن في رمز التطبيق أو الشبكة.

س: هل يجب أن أستخدم نسخ PostgreSQL المتماثلة لـ Odoo؟

قراءة النسخ المتماثلة تفريغ استعلامات التقارير من قاعدة البيانات الأساسية. لا يدعم Odoo تقسيم القراءة/الكتابة بشكل أصلي، لذا يقوم التكوين المخصص بتوجيه استعلامات القراءة فقط إلى النسخ المتماثلة. وهذا مفيد بشكل أساسي لعمليات النشر الكبيرة جدًا.

س: ما هو إصدار PostgreSQL الذي يجب أن أستخدمه مع Odoo؟

استخدم أحدث إصدار ثابت يدعمه إصدار Odoo الخاص بك. تتضمن الإصدارات الأحدث تحسينات مُحسِّن الاستعلام وأداء أفضل للفراغ. يوصى باستخدام PostgreSQL 16 أو 17 لإصدارات Odoo الحالية.

س: إلى أي مدى يساعد الضبط المناسب فعليًا؟

في تجربتنا، يؤدي الانتقال من الإعدادات الافتراضية إلى التكوين المضبوط عادةً إلى تحسين متوسط ​​أوقات تحميل الصفحة بنسبة 40-60% وتقليل تكرار الاستعلام البطيء بنسبة 80-90%. التحسن مثير وفوري.


ما هو التالي

يعد ضبط PostgreSQL هو التحسين الوحيد ذو التأثير الأعلى لأداء Odoo. ابدأ بإعدادات الذاكرة والفهرسة - فهذان التغييران وحدهما غالبًا ما يقللان أوقات الاستجابة إلى النصف.

اتصل بـ ECOSIRE للحصول على مساعدة في تحسين قاعدة البيانات، أو استكشف خدمات دعم Odoo لإدارة الأداء بشكل مستمر.


تم النشر بواسطة ECOSIRE - مساعدة الشركات على التوسع باستخدام حلول برمجيات المؤسسات.

E

بقلم

ECOSIRE Research and Development Team

بناء منتجات رقمية بمستوى المؤسسات في ECOSIRE. مشاركة رؤى حول تكاملات Odoo وأتمتة التجارة الإلكترونية وحلول الأعمال المدعومة بالذكاء الاصطناعي.

الدردشة على الواتساب