سجل الجلسة النشط لـ PostgreSQL - امتداد pgsentinel الجديد

أصدرت Pgsentinel امتداد pgsentinel الذي يحمل نفس الاسم ( مستودع github ) ، والذي يضيف عرض pg_active_session_history إلى PostgreSQL - تاريخ الجلسات النشطة (على غرار Oracle v $ active_session_history).

في الواقع ، هذه ببساطة كل لقطة ثانية من pg_stat_activity ، ولكن هناك نقاط مهمة:

  1. يتم تخزين جميع المعلومات المتراكمة في ذاكرة الوصول العشوائي فقط ، ويحكم حجم الذاكرة المستهلكة بعدد آخر السجلات المخزنة.
  2. تمت إضافة حقل الاستعلام - نفس الاستعلام من ملحق pg_stat_statements (يلزم التثبيت الأولي).
  3. تمت إضافة حقل top_level_query - نص الاستعلام الذي تم استدعاء الاستعلام الحالي منه (في حالة استخدام pl / pgsql)

قائمة كاملة بحقول pg_active_session_history:
       العمود |  اكتب ------------------ + -------------------------- ash_time |  الطابع الزمني مع المنطقة الزمنية datid |  oid datname |  معرف النص |  العدد الصحيح يستخدم sys |  اسم المستخدم Oid |  application_name النص  text_addr العميل  نص العميل  نص_العميل |  عدد صحيح backend_start |  الطابع الزمني مع المنطقة الزمنية xact_start |  الطابع الزمني مع المنطقة الزمنية query_start |  الطابع الزمني مع المنطقة الزمنية state_change |  الطابع الزمني مع المنطقة الزمنية wait_event_type |  نص الانتظار _ حدث |  حالة النص |  backend_xid |  xid backend_xmin |  xid top_level_query |  استعلام نصي |  الاستعلام عن النص |  نوع الخلفية الكبيرة  نص 


لا توجد حزمة جاهزة للتثبيت حتى الآن. يقترح تنزيل المصادر وبناء المكتبة بنفسك. أولاً ، تحتاج إلى تثبيت حزمة "devel" لخادمك وكتابة المسار إلى pg_config في متغير PATH. نجمع:
cd pgsentinel / src
اصنع
جعل التثبيت

أضف معلمات إلى postgres.conf:
Shared_preload_libraries = 'pg_stat_statements، pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = الكل

# عدد الإدخالات الأخيرة المحفوظة في الذاكرة
pgsentinel_ash.max_entries = 10000

إعادة تشغيل PostgreSQL وإنشاء الامتداد:
إنشاء pgsentinel التمديد ؛

تتيح لك المعلومات المتراكمة الإجابة عن أسئلة مثل:

  • ما التوقعات التي قضت الجلسات معظم الوقت فيها؟
  • ما هي الجلسات الأكثر نشاطًا؟
  • أي الاستفسارات كانت الأكثر نشاطًا؟

يمكنك بالطبع الحصول على إجابات لهذه الأسئلة باستخدام استعلامات SQL ، ولكن من الملائم أكثر رؤية ذلك بوضوح على الرسم البياني ، مع إبراز الفترات الزمنية باستخدام الماوس. يمكنك القيام بذلك باستخدام برنامج PASH-Viewer المجاني (يمكنك تنزيل الثنائيات المجمعة في قسم الإصدارات ).

عند بدء التشغيل ، يتحقق PASH-Viewer (بدءًا من الإصدار 0.4.0) من وجود عرض pg_active_session_history ، وإذا كان هناك واحد ، يقوم بتنزيل السجل المتراكم بأكمله منه ويستمر في قراءة البيانات الواردة الجديدة ، وتحديث الجدول الزمني كل 15 ثانية.

الصورة

Source: https://habr.com/ru/post/ar416909/


All Articles