فهم الذاكرة المشتركة PostgreSQL

مكتمل

يستخدم PostgreSQL الذاكرة التي يمكن تصنيفها على أنها:

  • الذاكرة المحلية - مخصصة لكل عملية
  • الذاكرة المشتركة - المستخدمة من قبل جميع العمليات

الذاكرة المحلية

تتطلب كل عملية في PostgreSQL ذاكرة لمعالجة الاستعلام. تسمح لك معلمات الخادم التالية بتعريف استخدام الذاكرة:

يحدد work_mem الذاكرة المطلوبة لفرز المجموعات لعمليات ORDER BY و DISTINCT. تحدد هذه المعلمة مقدار الذاكرة المتوفرة لعمليات الفرز الداخلية وجداول التجزئة. إذا كان لديك كمية كبيرة من الذاكرة المتوفرة وكان حمل العمل الخاص بك يحتوي على استعلامات ذات فرز معقد، فقد تؤدي زيادة قيمة المعلمة هذه إلى تحسين الأداء عن طريق السماح بعمليات فحص أكبر في الذاكرة قبل التسرب إلى القرص.

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

لضبط هذه القيمة، استخدم إجمالي ذاكرة الوصول العشوائي * 0.25 / max_connections كقيمة أولية.

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

autovacuum_work_mem بتعيين الحد الأقصى للذاكرة التي ستستخدمها كل عملية إخلاء تلقائي.

يحدد temp_buffers الذاكرة لتخزين الجداول المؤقتة. تعين هذه المعلمة الحد الأقصى لعدد المخازن المؤقتة المستخدمة من قبل كل جلسة عمل قاعدة بيانات.

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

قم بتعيين effective_cache_size إلى 50% من إجمالي ذاكرة الوصول العشوائي للجهاز.

الذاكرة المشتركة

يتم تخصيص الذاكرة المشتركة عند بدء التشغيل. يتم استخدام الذاكرة المشتركة ل:

يحدد shared_buffers المخازن المؤقتة للذاكرة المشتركة التي يستخدمها الخادم. يقوم PostgreSQL بتحميل صفحات الجداول والفهارس من التخزين المستمر إلى تجمع مخزن مؤقت مشترك، ثم يعمل عليها في الذاكرة. تجمع المخزن المؤقت المشترك هذا هو المكون الرئيسي للذاكرة المشتركة المستخدمة من قبل الخادم. القيمة الافتراضية هي 128 ميغابايت (اعتمادا على طبقة الحوسبة). إذا قررت تخصيص المزيد من الذاكرة، فستحتاج إلى إعادة تشغيل الخادم.

يحدد wal_buffers عدد المخازن المؤقتة لصفحة القرص في الذاكرة المشتركة لتسجيل الكتابة المسبقة (WAL) قبل كتابتها إلى التخزين المستمر.

باختصار، معلمات الخادم المهمة المتعلقة بالذاكرة التي قد ترغب في ضبطها هي:

  • shared_buffers
  • work_mem
  • effective_cache_size