برمجياتقراءة دقيقتين

إضافة pg_stat_ch من ClickHouse تصدّر كل استعلام في Postgres منفردًا بكلفة نحو 5 ميكروثوانٍ

يعتمد أغلب من يشغّلون Postgres في الإنتاج على إضافة pg_stat_statements لمعرفة الاستعلامات البطيئة. وعيبها أنها تجمّع: تقول إن استعلامًا ما نُفّذ آلاف المرات بمتوسط زمن معيّن، لكن الاستعلام الذي تعثّر مرة واحدة في الثالثة فجرًا لعميل بعينه يذوب في المتوسط ولا يظهر.

وتقدّم إضافة pg_stat_ch، مفتوحة المصدر من فريق ClickHouse بترخيص Apache 2.0، الطريقة المعاكسة. فهي تصدّر الحدث الخام لكل استعلام على حدة إلى ClickHouse، ويجري التجميع هناك لا داخل قاعدة البيانات. وبذلك تصبح ممكنة أسئلة لم تكن ممكنة من قبل، مثل عرض كل استعلام تجاوز ثانية في ساعة محددة.

ويكمن سر انخفاض الكلفة في المسار الذي تسلكه البيانات. فالحدث يُكتب في ذاكرة مشتركة ثابتة الحجم، ويجمع عامل في الخلفية الأحداث على دفعات ويرسلها، فلا يحدث أي نداء شبكة على مسار الاستعلام نفسه. ويذكر الـ README أن الكلفة نحو 5 ميكروثوانٍ لكل استعلام مسجّل عند الشريحة 99. وإذا توقف ClickHouse لا يتوقف Postgres، وإذا امتلأ الطابور تُسقط الأحداث ويرتفع عدّاد يمكن مراقبته.

وتدعم الإضافة Postgres 16 و17 و18، وتحتاج ClickHouse 23.3 أو أحدث. والمستودع ليس إصدارًا جديدًا، فقد أُنشئ في يناير 2026 وآخر تحديث له في 23 أكتوبر 2026.

ويبقى جانب يخص الشركات العاملة في مصر والسعودية تحت قوانين حماية البيانات. فالإضافة تسجّل نص الاستعلام حتى 2 كيلوبايت، وعنوان الـ IP للعميل، واسم التطبيق. وإذا كانت بيانات شخصية تمر داخل نصوص الاستعلامات، فإنها تُنسخ الآن إلى نظام ثانٍ. ولا يمنع ذلك استخدامها، لكنه يجعل تحديد من يصل إلى جدول الأحداث قرارًا يسبق تشغيلها.

المصادر

  1. المستودع وملف الـ README
  2. موقع التوثيق

من عدد السبت 13 جمادى الأولى - 24 أكتوبر

أخبار ذات صلة

برمجيات

ClickHouse تحذف محرّك pgrust من ClickBench بعد قياس هبط من 10.8 ثانية إلى 11 ميلي ثانية، وصاحبه يرد

المغزى: الرقم الذي يتحسّن ألف مرة في التشغيلة الثانية يقيس الكاش لا سرعة قاعدة البيانات، وسؤالان يفرزان أي benchmark: هل قيس باردًا، وهل يبقى كما هو إذا تغيّرت قيمة داخل الاستعلام.

13 جمادى الأولى - 24 أكتوبر

أخبار السبت 13 جمادى الأولى - 24 أكتوبر