الانتقال إلى المحتوى الرئيسي
يلتقط Query Insights بيانات القياس عن بُعد على مستوى كل عبارة من مثيل Managed Postgres لديك، ويُرتِّب كل نمط استعلام حسب مدى تأثيره، بحيث يمكنك الانتقال من “قيمة p99 ترتفع تدريجيًا” إلى “هذا النمط يُفرِّغ البيانات إلى القرص” من دون مغادرة Cloud Console. تأتي البيانات من pg_stat_ch، وهي إضافة Postgres مفتوحة المصدر تبث العدادات على مستوى كل عبارة إلى ClickHouse Cloud. تُطبَّع بيانات القياس عن بُعد داخل Postgres قبل أن تغادر قاعدة البيانات — تُزال القيم الحرفية وتُستبدل بعلامات نائبة، بحيث لا تدخل القيم الدقيقة التي تستعلم عنها مطلقًا إلى دفق بيانات القياس عن بُعد.

افتح Query insights

افتح مثيل Managed Postgres الخاص بك في Cloud Console وانقر على Query insights في الشريط الجانبي الأيسر. تنقسم الصفحة إلى أربعة أقسام، بالترتيب الذي ستستخدمها به فعليًا:
  • قسم نظرة عامة يوفّر ملخصًا لحالة قاعدة البيانات في شاشة واحدة.
  • جدول الأنماط البطيئة يرتّب كل نمط استعلام شغّلته قاعدة البيانات لديك، ومفرزًا وفقًا لما تشتبه فيه.
  • لوحة الاستعلامات الحديثة تسرد عمليات التنفيذ الفردية بترتيب زمني عكسي.
  • لوحة اللوحة الجانبية للتفاصيل تجمع كل Counter لنمط واحد.
استخدم selector Time period في الأعلى للتبديل بين آخر 15 دقيقة، أو الساعة الماضية، أو اليوم الماضي، أو الأسبوع الماضي، أو الشهر الماضي. ويُضبط حجم فترات aggregation تلقائيًا — فترات مدتها دقيقة واحدة لآخر 15 دقيقة أو الساعة الماضية، و5 دقائق لليوم الماضي، وساعة واحدة للأسبوع الماضي أو الشهر الماضي — بحيث تظل charts سريعة الاستجابة.

نظرة عامة

تعرض صفحة النظرة العامة شبكة 3×2 من ست لوحات:
اللوحةما الذي تعرضه
الاستعلامات / ثانيةحجم الاستعلامات محسوبًا كمعدل عبر النافذة المحددة.
زمن استجابة الاستعلاممتوسط وp50 وp95 وp99 في مخطط واحد، بحيث يمكنك رؤية متى يتباعد الذيل عن الوسيط.
تفصيل العملياتمخطط دائري حلقي يوضح مزيج عمليات SELECT وINSERT وUPDATE وغيرها من العمليات التي يتكوّن منها حمل العمل لديك فعليًا.
الصفوف المُعادة / المتأثرةإجمالي الصفوف التي عالجها حمل العمل خلال النافذة.
نسبة إصابة المخزن المؤقتمخطط دائري حلقي يوضح الكتل المشتركة المصابة مقابل الكتل المشتركة المقروءة، مع إجمالي وقت CPU في وسيلة الإيضاح.
الأخطاءإجمالي عدد الأخطاء، موزعًا بمرور الوقت.
تُظهر لك شاشة واحدة ما إذا كانت قاعدة البيانات سليمة. ويكون للمثيل السليم نمط مألوف — نسبة إصابة المخزن المؤقت في أواخر التسعينات، وحجم الاستعلامات يتماشى مع حركة مرور التطبيق، ومعدل الأخطاء ثابت أو صفري، وقيَم زمن الاستجابة المئينية تتعقب بعضها بعضًا عن كثب.

الأنماط البطيئة

عندما يشير قسم “نظرة عامة” إلى وجود مشكلة، يكون جدول الأنماط هو المكان الذي يبدأ منه التحقيق. صف واحد لكل نمط استعلام مُطبَّع، بعد تجريد القيم الحرفية بحيث تُجمَّع عمليات تنفيذ العبارة نفسها في الصف نفسه.

رتّب بحسب ما تشكّ فيه

يُفرَز الجدول افتراضيًا حسب إجمالي زمن التشغيل ترتيبًا تنازليًا — وعندما تفرزه بهذه الطريقة، يكون النمط الأعلى عادةً هو الإجابة عن سؤال “ما الذي يكلّفني أكثر؟” وقد لا يكون هذا هو أبطأ نمط بحد ذاته. فقد يكون استعلام يُشغَّل ثمانية ملايين مرة يوميًا بزمن اثني عشر ميلي ثانية أهم من استعلام آخر شُغِّل مرة واحدة واستغرق ثلاث ثوانٍ. يمنحك كل فرز منظورًا مختلفًا:
  • إجمالي زمن التشغيل — حيث قضت قاعدة البيانات أكبر قدر من الوقت الفعلي.
  • وقت CPU — الأنماط كثيفة المعالجة.
  • الاستدعاءات — الأنماط عالية التكرار.
  • الأخطاء — الإخفاقات المتكررة.
  • متوسط / P50 / P95 / P99 / الحد الأقصى لزمن الاستجابة — القيم الشاذة، بحسب النسبة المئوية.
  • الصفوف المُعادة، الكتل المقروءة، الكتل المخدَّمة من الذاكرة المؤقتة، بايتات WAL — الأنماط التي حرّكت أكبر قدر من البيانات عبر المحرك، أو الذاكرة المؤقتة، أو سجل الكتابة المسبقة.
انقر زر الأعمدة لإظهار أعمدة إضافية أو إخفائها. يعرض جدول الأنماط 19 عمودًا إجمالًا، بما في ذلك تفصيل النِّسَب المئوية، ونسبة إصابة الذاكرة المؤقتة، ووقت CPU لكل نمط.

تضييق نطاق الجدول

صفِّ الجدول بحسب الجزء من عبء العمل الذي تُحقّق فيه:
  • قاعدة البيانات
  • المستخدم
  • العملية (SELECT, INSERT, UPDATE, DELETE, …)
  • التطبيقapplication_name من سلسلة الاتصال
“أرِني فقط ما الذي تفعله خدمة orders على قاعدة البيانات sales” تصبح قائمتَي اختيار منسدلتين. وتُملأ قيم التصفية تلقائيًا استنادًا إلى ما شغّله مثيلك فعليًا.

الاستعلامات الحديثة

أسفل جدول الأنماط، تعرض لوحة الاستعلامات الحديثة عمليات التنفيذ الفردية بترتيب زمني عكسي — صفًا واحدًا لكل تعليمة مُنفَّذة، وليس صفًا واحدًا لكل نمط. استخدمها عندما تريد تدفق الأحداث الخام بدلًا من عرض مُجمَّع، على سبيل المثال للتحقق سريعًا من أن الإصلاح دخل حيّز التنفيذ أو للعثور على اللحظة الدقيقة التي ظهر فيها الخطأ. الأعمدة الافتراضية هي الوقت، والعملية، والاستعلام، والمدة، والصفوف، وقاعدة البيانات، والمستخدم، والكتل المقروءة. افتح منتقي الأعمدة لعرض Application وBlks hit وCPU user وCPU sys وPID. يقبل الجدول فلاتر قاعدة البيانات والمستخدم والعملية والتطبيق نفسها كما في جدول الأنماط، ويمكن فرزه حسب الوقت، والمدة، والصفوف، والكتل المقروءة، ووقت CPU. انقر على أي صف لفتح لوحة التفاصيل الجانبية نفسها كما في جدول الأنماط، على أن تكون مقتصرة على نمط عملية التنفيذ المفردة تلك.

اللوحة الجانبية للتفاصيل

انقر على أي صف في جدول الأنماط أو الاستعلامات الأخيرة، فتُفتح اللوحة الجانبية لتفاصيل الاستعلام على اليمين. تعرض اللوحة جميع عمليات تنفيذ هذا النمط ضمن النطاق الزمني المحدد، وتُجمِّع العدادات التي توضّح سبب بطئه. تتألف اللوحة من عرض واحد قابل للتمرير يضم خمسة أقسام:
  • نمط الاستعلام — ‏SQL المُطبَّع مع استبدال القيم الحرفية بـ $1، $2، … وزر للنسخ إلى الحافظة.
  • الاستخدام المُجمَّع للموارد — شبكة من 13 بطاقة إحصائية تغطي إجمالي الاستدعاءات، ومتوسط/‏P95/‏P99/الحد الأقصى لزمن الاستجابة، وإجمالي زمن التشغيل، والصفوف المُعادة، ونسبة إصابة الذاكرة المؤقتة، والكتل المقروءة، والكتل الموجودة في ذاكرة التخزين المؤقت، ووقت CPU، وبايتات WAL، والأخطاء.
  • سياق الاستعلام — قاعدة البيانات، والمستخدم، والعملية، والتطبيق الذي صدر عنه هذا النمط.
  • التنفيذات البارزة — الأخطاء، وعمليات التشغيل البطيئة بشكل غير معتاد، والتنفيذات ذات النتائج الكبيرة، وتظهر قبل القائمة الكاملة للتنفيذات الأخيرة.
  • التنفيذات الأخيرة — عمليات التشغيل الفردية للنمط نفسه، مع عدادات لكل تنفيذ.

العدادات لكل تنفيذ

وسّع تنفيذًا حديثًا وستحصل على العدادات التي توضّح بدقة أين استُهلك الوقت:
  • الكتل المشتركة — يظهر دائمًا كلٌّ من القراءة والإصابات؛ وتظهر الكتابة والتعليم كمتّسخة عندما لا تكون القيم صفرية.
  • عمليات الكتل المحلية والمؤقتة — تشير قيم عمليات الكتل المؤقتة غير الصفرية إلى أن عملية sort أو hash قد نُقلت إلى القرص.
  • وقت القراءة / الكتابة — وقت I/O، منفصلًا عن وقت CPU.
  • وقت CPU — وقت المستخدم ووقت النظام، كلٌّ على حدة.
  • العاملون المتوازيون — العدد المخطَّط له مقابل العدد الذي أُطلق فعليًا.
  • JIT — إجمالي وقت تجميع JIT وعدد الدوال.
  • WAL — عدد البايتات وعدد السجلات.
كل ما تحتاج إليه لتشخيص نمط بطيء موجود في مكان واحد، وعلى شاشة واحدة.

واجهة برمجة تطبيقات Query insights

تتوفر بيانات القياس عن بُعد نفسها أيضًا برمجيًا من خلال ClickHouse Cloud OpenAPI. ويقابل جدول الأنماط البطيئة نقطة النهاية list slow query patterns ، كما تقابل اللوحة الجانبية للتفاصيل نقطة النهاية get slow query pattern التي تُرجع المقاييس المجمّعة لنمط واحد، إلى جانب أحدث عمليات تنفيذه.

آلية العمل

تُطبَّع في Postgres قبل الإرسال عبر الشبكة

يعترض pg_stat_ch مرحلة التحليل النحوي والدلالي، ويستبدل كل قيمة حرفية بعنصر نائب ($1, $2, …)، ويخزّن النمط الناتج مؤقتًا في ذاكرة LRU خاصة بكل backend ومفهرسة بواسطة queryid. وعندما ينتهي المنفّذ من تنفيذ التعليمة، يكون ذلك النمط المخزَّن مؤقتًا هو ما يُرفق بالحدث. ولا تغادر التعليمة الفعلية مع القيم قاعدة البيانات مطلقًا.

من دون إعاقة قاعدة البيانات

يضيف المُنتِج عبئًا إضافيًا يقارب 3% لكل تعليمة SQL. ويستخدم مسار الإدراج في الطابور قفل try-lock غير حاجب على مخزن مؤقت دائري في الذاكرة المشتركة. وعند ارتفاع الحمل، يُسقِط الامتداد الأحداث ويعتمد على عدّاد بدلًا من فرض ضغط رجعي على Postgres.

أحداث أولية، لا بيانات مجمّعة

يُصدر pg_stat_ch حدثًا أوليًا واحدًا لكل تعليمة مُنفَّذة (على المستوى الأعلى والمتداخلة)، مع مراعاة أخذ العينات. وكل مئين وترتيب وتفصيل في واجهة المستخدم هو استعلام في ClickHouse على تدفّق الأحداث نفسه.

نفس المحرك الذي يستخدمه عملاؤنا

الواجهة الخلفية لـ Insights هي ClickHouse Cloud. تنتج بيانات القياس عن بُعد لكل استعلام من مثيل Postgres كثيف الحمل ملايين الصفوف يوميًا؛ ويجعل الضغط العمودي الاحتفاظ بأشهر من تفاصيل كل تنفيذ منخفض التكلفة، كما تُبقي عمليات التجميع التي تستغرق أقل من ثانية عبر مليارات الصفوف واجهة المستخدم تفاعلية أثناء تحليل بيانات أسبوع أو شهر.

مفتوح المصدر

pg_stat_ch مرخّص بموجب Apache 2.0. شغِّله مع أي Postgres، وأرسل البيانات إلى أي ClickHouse. الكود المصدري وتقارير المشكلات متاحة على github.com/clickhouse/pg_stat_ch.
آخر تعديل في ٢٥ يونيو ٢٠٢٦