مصادقة SCRAM في قاعدة بيانات Azure لـ PostgreSQL - خادم مرن

ينطبق على: قاعدة بيانات Azure ل PostgreSQL - خادم مرن

تقدم هذه المقالة سيناريوهات شائعة وأسباب جذرية قد تؤدي إلى استخدام ذاكرة عالية في قاعدة بيانات Azure لخادم PostgreSQL المرن.

ستتعرف في هذه المقالة على ما يلي:

  • حول أدلة استكشاف الأخطاء وإصلاحها لتحديد والحصول على توصيات للتخفيف من الأسباب الجذرية.
  • أدوات لتحديد استخدام الذاكرة العالية.
  • أسباب ارتفاع الذاكرة والإجراءات العلاجية.

أدلة استكشاف الأخطاء وإصلاحها

باستخدام إرشادات استكشاف الأخطاء وإصلاحها للميزة المتوفرة على مدخل خادم Azure Database for PostgreSQL المرن، يمكن العثور على السبب الجذري المحتمل والتوصيات للحد من سيناريو الذاكرة العالية. كيفية إعداد أدلة استكشاف الأخطاء وإصلاحها لاستخدامها يرجى اتباع إرشادات استكشاف أخطاء الإعداد وإصلاحها.

أدوات لتحديد استخدام الذاكرة العالية

ضع في اعتبارك الأدوات التالية لتحديد استخدام الذاكرة العالية.

Azure Metrics

استخدم Azure Metrics لمراقبة النسبة المئوية للذاكرة المستخدمة للتاريخ والإطار الزمني المحددين.
للمراقبة الاستباقية، قم بتكوين التنبيهات على المقاييس. للحصول على إرشادات خطوة بخطوة، راجع Azure Metrics.

Query Store

يسجل Query Store تلقائياً محفوظات الاستعلامات والخطط وإحصائيات وقت التشغيل، ويحتفظ بها لمراجعتك.

يمكن لمخزن الاستعلام ربط معلومات حدث الانتظار بإحصائيات وقت تشغيل الاستعلام. استخدم Query Store لتحديد الاستعلامات التي تحتوي على استهلاك الذاكرة العالية خلال فترة الاهتمام.

لمزيد من المعلومات حول إعداد Query Store واستخدامه، راجع Query Store.

الأسباب والإجراءات العلاجية

ضع في اعتبارك الأسباب التالية والإجراءات العلاجية لحل استخدام الذاكرة العالية.

معلمات الخادم

تؤثر معلمات الخادم التالية على استهلاك الذاكرة ويجب مراجعتها:

work_mem

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

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

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

إعداد أكثر أمانًا لـ work_mem هو work_mem = Total RAM / Max_Connections / 16

القيمة الافتراضية لـ work_mem هي 4 ميجابايت. يمكنك تعيين القيمة work_mem على مستويات متعددة بما في ذلك على مستوى الخادم عبر صفحة المعلمات في مدخل Microsoft Azure.

استراتيجية جيدة هي مراقبة استهلاك الذاكرة خلال أوقات الذروة.

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

Maintenance_Work_Mem

maintenance_work_mem لمهام الصيانة مثل التفريغ وإضافة الفهارس أو المفاتيح الخارجية. استخدام الذاكرة في هذا السيناريو هو لكل جلسة عمل.

على سبيل المثال، ضع في اعتبارك سيناريو حيث يوجد ثلاثة عمال إخلاء تلقائي قيد التشغيل.

إذا تم تعيين maintenance_work_mem إلى 1 غيغابايت، فستستخدم جميع الجلسات مجتمعة 3 غيغابايت من الذاكرة.

يمكن أن تتسبب القيمة العالية maintenance_work_mem جنبًا إلى جنب مع جلسات تشغيل متعددة لإنشاء الفهرس/التفريغ/إضافة مفاتيح خارجية في استخدام ذاكرة عالية. الحد الأقصى للقيمة المسموح بها لمعلمة maintenance_work_mem الخادم في قاعدة بيانات Azure لخادم PostgreSQL المرن هو 2 غيغابايت.

المخازن المؤقتة المشاركة

تحدد المعلمة shared_buffers مقدار الذاكرة المخصصة للخادم للتخزين المؤقت للبيانات. الهدف من المخازن المؤقتة المشتركة هو تقليل إدخال/إخراج القرص.

إعداد معقول للمخازن المؤقتة المشتركة هو 25٪ من ذاكرة الوصول العشوائي. لا ينصح بتعيين قيمة أكبر من 40٪ من ذاكرة الوصول العشوائي لأحمال العمل الأكثر شيوعا.

الحد الأقصى للاتصالات

تستهلك جميع الاتصالات الجديدة وال الخاملة على قاعدة بيانات Azure لقاعدة بيانات خادم PostgreSQL المرنة ما يصل إلى 2 ميغابايت من الذاكرة. تتمثل إحدى طرق مراقبة الاتصالات في استخدام الاستعلام التالي:

select count(*) from pg_stat_activity;

عندما يكون عدد الاتصالات بقاعدة بيانات مرتفعًا، يزداد استهلاك الذاكرة أيضًا.

في الحالات التي يوجد فيها العديد من اتصالات قاعدة البيانات، ضع في اعتبارك استخدام تجمع اتصال مثل PgBouncer.

لمزيد من التفاصيل حول PgBouncer، راجع:

مُجمع الاتصال.

الممارسات الفضلى.

يوفر خادم Azure Database for PostgreSQL المرن PgBouncer كحل مضمن لتجميع الاتصال. لمزيد من المعلومات، راجع PgBouncer.

شرح وتحليل

بمجرد تحديد الاستعلامات التي تستهلك ذاكرة عالية من Query Store، استخدم EXPLAIN و EXPLAIN ANALYZE لمزيد من التحقيق وضبطها.

لمزيد من المعلومات حول الأمر EXPLAIN، راجع Explain Plan.