جزء من سلسلة Performance & Scalability
اقرأ الدليل الكاملتحسين أداء 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: مسح كامل للجدول يشير إلى وجود فهرس مفقود
- الحلقة المتداخلة: يمكن أن تكون باهظة الثمن مع مجموعات النتائج الكبيرة
- الفرز: عمليات الفرز داخل الذاكرة التي تتجاوز مساحة العمل، تنتقل إلى القرص
- المخازن المؤقتة المشتركة للقراءة: القيم العالية تعني عدم تخزين البيانات مؤقتًا
** قتلة الأداء الشائعة: **
- فهارس مفقودة في أعمدة جملة WHERE
- عبارات IN الكبيرة التي تم إنشاؤها بواسطة Odoo ORM
- الحقول المحسوبة المخزنة تؤدي إلى إعادة الحساب عند الكتابة
- استعلامات تقرير معقدة تنضم إلى أكثر من 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 - مساعدة الشركات على التوسع باستخدام حلول برمجيات المؤسسات.
بقلم
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
قم بتحويل أعمالك باستخدام Odoo ERP
تنفيذ وتخصيص ودعم خبير Odoo لتبسيط عملياتك.
مقالات ذات صلة
كيفية إضافة زر مخصص إلى عرض نموذج Odoo (2026)
إضافة أزرار إجراءات مخصصة إلى طرق عرض نموذج Odoo 19: طريقة إجراء Python، وعرض الميراث، والرؤية المشروطة، ومربعات حوار التأكيد. تم اختبار الإنتاج.
كيفية إضافة حقل مخصص في Odoo بدون الاستوديو (2026)
قم بإضافة حقول مخصصة عبر وحدة مخصصة في Odoo 19: وراثة النموذج، وامتداد العرض، والحقول المحسوبة، وقرارات المتجر/غير المتجر. الكود أولاً، يتم التحكم في الإصدار.
كيفية إضافة تقرير مخصص في أودو باستخدام التخطيط الخارجي
أنشئ تقرير PDF يحمل علامة تجارية في Odoo 19 باستخدام web.external_layout: قالب QWeb، تنسيق الورق، ربط الإجراء. مع طباعة الشعار + تجاوزات التذييل.
المزيد من Performance & Scalability
Odoo 19 HR: مصفوفة المهارات، الخطط المهنية، دورات الأداء
ترقية الموارد البشرية في Odoo 19: مصفوفة المهارات الأصلية، وتخطيط المسار الوظيفي، ودورات مراجعة الأداء، وشبكة مكونة من 9 صناديق، وتخطيط التعاقب، وتكامل نظام معلومات الموارد البشرية.
معايير أداء Odoo 19: أرقام ضبط PostgreSQL 17
معايير أداء Odoo 19 الواقعية: سرعة عميل الويب، وإنتاجية ORM، وإعدادات ضبط PG17، وتجميع الاتصالات، وأعداد العاملين، وحدود القياس.
تحسين تكلفة OpenClaw وكفاءة الرمز المميز على نطاق واسع
تحسين تكلفة الرمز المميز لـ OpenClaw: التخزين المؤقت السريع، وتوجيه النموذج، والتخزين المؤقت للاستجابة، وواجهات برمجة التطبيقات المجمعة، وحواجز حماية التكلفة لكل مستأجر لوكلاء الإنتاج.
التحديث التزايدي لـ Power BI للجداول التي يزيد عددها عن 10 ملايين صف
دليل التشغيل للتحديث التزايدي لـ Power BI لجداول صفوف تزيد عن 10 ملايين: تصميم الأقسام، وRangeStart/RangeEnd، وسياسات التحديث، وطي الاستعلام، وDirectQuery الهجينة.
تصحيح أخطاء Webhook ومراقبتها: الدليل الكامل لاستكشاف الأخطاء وإصلاحها
أتقن تصحيح أخطاء خطاف الويب باستخدام هذا الدليل الكامل الذي يغطي أنماط الفشل وأدوات تصحيح الأخطاء وإستراتيجيات إعادة المحاولة ومراقبة لوحات المعلومات وأفضل ممارسات الأمان.
اختبار التحميل k6: اختبار الضغط على واجهات برمجة التطبيقات الخاصة بك قبل الإطلاق
اختبار التحميل الرئيسي لـ k6 لواجهات برمجة تطبيقات Node.js. يغطي عمليات تكثيف المستخدم الافتراضي، والعتبات، والسيناريوهات، وHTTP/2، واختبار WebSocket، ولوحات معلومات Grafana، وأنماط تكامل CI.