الانتقال إلى المحتوى الرئيسي

استخدام الجدول system.query_log

يوضّح الاستعلام المفيد التالي أيّ الاستعلامات التي نفّذتها استهلكت أكبر قدر من الذاكرة. بعض الملاحظات حول هذا الاستعلام:
  • تُحتسب النتائج استنادًا إلى اليوم الماضي (now() - toIntervalDay(1))) ولكن يمكنك بسهولة تعديل الفاصل الزمني
  • يفترض أن لديك عنقود باسم default، وهو اسم الـ عنقود لديك في ClickHouse Cloud. غيّر default إلى اسم الـ عنقود لديك
  • إذا لم يكن لديك عنقود، فاطّلع على الاستعلام الوارد في نهاية هذه المقالة
SELECT
    count() as nb_query,
    user,
    query,
    sum(memory_usage) AS memory,
    normalized_query_hash
FROM
    clusterAllReplicas(default, system.query_log)
WHERE
    (event_time >= (now() - toIntervalDay(1)))
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
    and user != 'monitoring-internal'
GROUP BY
    normalized_query_hash,
    query,
    user
ORDER BY
    memory DESC;
تبدو الاستجابة كما يلي:
┌─nb_query─┬─user────┬─query─────────────────────────────────────────────────────────┬───memory─┬─normalized_query_hash─┐
│       11 │ default │ select version()                                              │ 46178924 │   7202516440347714159 │
│        2 │ default │ SELECT * FROM "system"."table_functions" LIMIT 31 OFFSET 0    │  8391544 │  12830067173062987695 │
└──────────┴─────────┴───────────────────────────────────────────────────────────────┴──────────┴───────────────────────┘
إذا لم يكن لديك جدول system.query_log، فمن المرجّح أن تسجيل الاستعلامات غير مفعّل لديك. راجع تفاصيل إعداد query_log لمعرفة كيفية تفعيله.
إذا لم يكن لديك عنقود، فيمكنك ببساطة الاستعلام مباشرةً من جدول system.query_log الوحيد لديك:
SELECT
    count() as nb_query,
    user,
    query,
    sum(memory_usage) AS memory,
    normalized_query_hash
FROM
    system.query_log
WHERE
    (event_time >= (now() - toIntervalDay(1)))
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
    and user != 'monitoring-internal'
GROUP BY
    normalized_query_hash,
    query,
    user
ORDER BY
    memory DESC;
آخر تعديل في ٢٩ يونيو ٢٠٢٦