تحسن PostgreSQL PG14 التسجيل من خلال libpq

التحديث: 2 يوليو 2023

تحسن PostgreSQL 14 التسجيل باستخدام libpq

تم تحسين وظيفة libpq في PG14 لتتبع مدى توفر اتصال خادم التطبيق / العميل. يضيف خيارات جديدة للتحكم في تنسيق الإخراج.

خلفية

libpq هي إحدى مكتبات العميل ، ويمكن للمستخدمين تشغيل وظيفة PQtrace لتسجيل الاتصال بين الخادم والعميل. هذا الاتصال هو نوع من معلومات البروتوكول التي يستخدمها PG ، بما في ذلك: معرف نوع الرسالة وطول الرسالة ومحتوى الرسالة لمعلومات التبادل.

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

إنشاء جدول تراجع tblacewith

الموقع '/ الصفحة الرئيسية / postgres / src / test / regress / testtablespace

مع (عشوائي صفحة تكلفة = 3.0) ;

سيخرج التطبيق الذي يستدعي PQtrace في PG13 أنواع السجلات التالية إلى الملف المحدد:

السجلات التي تم إنشاؤها بواسطة libpq في PG13

وتجدر الإشارة إلى أن إخراج سجل PQtrace لإصدار PG الحالي لا يحتوي على طابع زمني ، لذلك لا يمكن استخدامه كمرجع لتحليل الاستعلامات البطيئة. بالإضافة إلى ذلك ، نظرًا لأن معرف الرسالة وطول رسالة الخادم / العميل ومحتوى المخرجات على سطر منفصل ، فإن الموثوقية منخفضة نسبيًا ، ويصبح تحليل رسائل البروتوكول أكثر صعوبة. Z و C المميزان بعلامة 1 هما معرفات رسالة البروتوكول. لفهم معنى كل معرف ، راجع قسم تنسيقات الرسائل في الدليل

نظرة عامة على تحسينات الميزات

في PG14 ، تم تحسين وظيفة PQtrace لجعل سجل الإخراج أكثر قابلية للقراءة ويتضمن طابعًا زمنيًا. تمت إضافة وظيفة جديدة PQsetTraceFlags للتحكم في إخراج الطابع الزمني.

تحسين إخراج السجل

تنتج وظيفة التتبع المحسّنة في PG14 مخرجات مشابهة لما يلي:

السجلات التي تم إنشاؤها بواسطة libpq في PG 14

1) يحتوي على طابع زمني

2) رمز اتجاه الرسالة هو أكثر سهولة: F تعني الواجهة الأمامية ، B تعني النهاية الخلفية

3) إخراج اسم الرسالة الرسمي بدلاً من معرف رسالة البروتوكول

4) يتم إخراج رسائل بروتوكول ذات مغزى في سطر واحد

طريقة استرجاع السجل

كما كان من قبل ، ابدأ التسجيل عن طريق استدعاء دالة PQtrace الخاصة بـ libpq. إذا لم تكن بحاجة إلى إخراج الطابع الزمني ، فيمكنك التحكم فيه من خلال وظيفة PQsetTraceFlags.

تأثير

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

مستقبل

سيحتوي سجل libpq الخاص بـ PG14 على طوابع زمنية ونصوص أكثر قابلية للقراءة. في الإصدارات اللاحقة ، سنعمل على تحسين قابلية الاستخدام في الجوانب التالية:

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

2) أتمنى إضافة متغيرات البيئة ومعلمات الاتصال لتعيين موقع الدليل لإخراج السجل واسم ملف السجل للتكيف مع البيئة دون تعديل التطبيق.

  الروابط:

lq9p16e

nl8060bc3117e