فهم معالجة الاتصال

مكتمل

يستخدم Postgres نموذج اتصال يستند إلى عملية. يتضمن إنشاء اتصال نظام التشغيل وتخصيص كمية صغيرة من الذاكرة. يتم تنفيذ كل استعلام SQL باستخدام اتصال حالي.

حالات الاتصال

يمكن أن يكون الاتصال في واحدة من أربع حالات:

  • النشطة - الاتصالات النشطة، التي تقوم حاليا بتشغيل الاستعلامات.
  • الخمول - فتح الاتصالات غير المستخدمة.
  • الخمول في المعاملات - اتصال قيد الانتظار، ولا يقوم بأي عمل. استخدم pg_stat_activity لفهم ما يفعله الاتصال، ومدة وجوده في هذه الحالة.
  • الخمول في المعاملة (تم إجهاضها) - الاتصالات التي كانت الخمول في المعاملة ولكن تم إجهاضها الآن.

يجعل نموذج الاتصال المستند إلى العملية من المكلف الحفاظ على العديد من الاتصالات الخاملة.

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

يحد PostgreSQL من الحد الأقصى لعدد الاتصالات المتزامنة بالخادم في أي وقت باستخدام معلمة خادم تسمى max_connections. في قاعدة بيانات Azure ل PostgreSQL، يعتمد الإعداد الافتراضي على طبقة الحوسبة الخاصة بك. تتراوح القيمة المسموح بها بين 25 و5000.

يحتفظ التنفيذ المحلي ل PostgreSQL ببعض الاتصالات للمستخدم الفائق للحفاظ على تكامل قاعدة البيانات. عادة ما يكون هذا الحجز 15% من القيمة max_connections.

قاعدة بيانات Azure ل PostgreSQL هي حل مدار وتحجز تلقائيا ثلاثة اتصالات لمراقبة خادم مرن.

ملاحظه

لا توجد معلمة خادم لإدارة superuser_reserved_connections في قاعدة بيانات Azure ل PostgreSQL.

تجميع الاتصال

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

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

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

PGBouncer هو حل تجميع اتصال مضمن في قاعدة بيانات Azure ل PostgreSQL. لتمكين pgBouncer:

  1. في مدخل Microsoft Azure، انتقل إلى قاعدة بيانات Azure لخادم PostgreSQL.
  2. من القائمة اليسرى، حدد Server Parameters.
  3. في شريط البحث، ابحث عن PgBouncer.
  4. قم بتعيين إعداد pgbouncer.enabled إلى true لتمكين PgBouncer. لا يتطلب هذا الإعداد إعادة تشغيل الخادم.
  5. قم بتعيين pgbouncer.default_pool_size إلى عدد الاتصالات لكل زوج من المستخدمين/قاعدة البيانات التي تحتاجها. الافتراضي هو 50.
  6. تعيين المعلمة pgBouncer.pool_mode إلى TRANSACTION.

ملاحظه

يتم دعم PgBouncer على مستويات الحوسبة للأغراض العامة والذاكرة المحسنة في كل من الوصول العام وشبكة الوصول الخاصة. PgBouncer غير مدعوم على طبقة الحوسبة القابلة للاندفاع. عند تغيير طبقة الحوسبة من الغرض العام أو الذاكرة المحسنة إلى قابلة للاندفاع، يتم فقدان قدرة PGBouncer.