> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# تحديد الاستعلامات المكلفة حسب استخدام الذاكرة في ClickHouse

> تعرّف على كيفية استخدام جدول `system.query_log` للعثور على الاستعلامات الأكثر استهلاكًا للذاكرة في ClickHouse، مع أمثلة لعمليات النشر العنقودية والمستقلة.

<div id="using-the-systemquery-log-table">
  ## استخدام الجدول `system.query_log`
</div>

يوضّح الاستعلام المفيد التالي أيّ الاستعلامات التي نفّذتها استهلكت أكبر قدر من الذاكرة.

بعض الملاحظات حول هذا الاستعلام:

* تُحتسب النتائج استنادًا إلى اليوم الماضي (`now() - toIntervalDay(1))`) ولكن يمكنك بسهولة تعديل الفاصل الزمني
* يفترض أن لديك عنقود باسم `default`، وهو اسم الـ عنقود لديك في [ClickHouse Cloud](https://console.clickhouse.cloud). غيّر `default` إلى اسم الـ عنقود لديك
* إذا لم يكن لديك عنقود، فاطّلع على الاستعلام الوارد في نهاية هذه المقالة

```sql theme={null}
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 is_initial_query = 1
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
    and user != 'monitoring-internal'
GROUP BY
    normalized_query_hash,
    query,
    user
ORDER BY
    memory DESC;
```

تبدو الاستجابة كما يلي:

```response theme={null}
┌─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 │
└──────────┴─────────┴───────────────────────────────────────────────────────────────┴──────────┴───────────────────────┘
```

<Note>
  إذا لم يكن لديك جدول `system.query_log`، فمن المرجّح أن تسجيل الاستعلامات غير مفعّل لديك. راجع تفاصيل [إعداد `query_log`](/ar/reference/settings/server-settings/settings/query#query_log) لمعرفة كيفية تفعيله.
</Note>

<Note>
  **يحتوي `query_log` على أكثر من مجرد الاستعلامات التي أرسلتها**

  قد يظهر الاستعلام الواحد الذي أرسلته في عدة صفوف: الاستعلام الأوّلي (`is_initial_query = 1`) بالإضافة إلى الخطوات المشتقة أو الداخلية (`is_initial_query = 0`)، مثل الاستعلامات الثانوية للتنفيذ الموزّع أو الاستعلامات الداخلية المستخدمة لتقييم views. لهذه الصفوف الداخلية قيم `query_id` خاصة بها — يعيّنها ClickHouse، وتتضمن أحيانًا تسمية مثل `queryView...` — لذلك لا تفترض أن كل `query_id` يطابق ما أبلغ عنه عميلك. ولإسناد الاستخدام إلى الاستعلام كما شغّلته أنت، قم بالتصفية باستخدام `is_initial_query = 1` أو طابِق `query_id = initial_query_id`. راجع [كيفية تحديد الاستعلامات الأعلى كلفة](/ar/resources/support-center/knowledge-base/performance-optimization/find-expensive-queries#initial_query_id-vs-query_id) و[مرجع `query_log`](/ar/reference/system-tables/query_log) لمزيد من التفاصيل.
</Note>

إذا لم يكن لديك عنقود، فيمكنك الاستعلام مباشرةً من جدول `system.query_log` الوحيد لديك:

```sql theme={null}
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 is_initial_query = 1
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
    and user != 'monitoring-internal'
GROUP BY
    normalized_query_hash,
    query,
    user
ORDER BY
    memory DESC;
```
