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

> جدول نظامي يحتوي على تتبعات المكدس التي جمعها مُحلِّل أداء الاستعلام المعتمد على أخذ العينات.

# system.trace_log

<Info>
  **الاستعلام في ClickHouse Cloud**

  تُخزَّن بيانات جدول النظام هذا محليًا على كل عقدة في ClickHouse Cloud. لذلك، يتطلب الحصول على رؤية كاملة لجميع البيانات استخدام الدالة `clusterAllReplicas`. راجع [هنا](/ar/reference/system-tables/overview#system-tables-in-clickhouse-cloud) لمزيد من التفاصيل.
</Info>

<div id="description">
  ## الوصف
</div>

يحتوي على تتبع المكدس التي يجمعها [مُحلِّل أداء الاستعلام المعتمد على أخذ العينات](/ar/concepts/features/performance/troubleshoot/sampling-query-profiler).

ينشئ ClickHouse هذا الجدول عند تعيين قسم إعدادات الخادم [trace\_log](/ar/reference/settings/server-settings/settings#trace_log). راجع أيضًا الإعدادات التالية: [query\_profiler\_real\_time\_period\_ns](/ar/reference/settings/session-settings#query_profiler_real_time_period_ns)، [query\_profiler\_cpu\_time\_period\_ns](/ar/reference/settings/session-settings#query_profiler_cpu_time_period_ns)، [memory\_profiler\_step](/ar/reference/settings/session-settings#memory_profiler_step)،
[memory\_profiler\_sample\_probability](/ar/reference/settings/session-settings#memory_profiler_sample_probability)، [trace\_profile\_events](/ar/reference/settings/session-settings#trace_profile_events).

لتحليل السجلات، استخدم دوال introspection التالية: `addressToLine` و`addressToLineWithInlines` و`addressToSymbol` و`demangle`.

<div id="columns">
  ## الأعمدة
</div>

* `hostname` ([LowCardinality(String)](/ar/reference/data-types/lowcardinality)) — اسم مضيف الخادم الذي ينفّذ الاستعلام.
* `event_date` ([Date](/ar/reference/data-types/date)) — تاريخ لحظة أخذ العينة.
* `event_time` ([DateTime](/ar/reference/data-types/datetime)) — الطابع الزمني للحظة أخذ العينة.
* `event_time_microseconds` ([DateTime64(6)](/ar/reference/data-types/datetime64)) — الطابع الزمني للحظة أخذ العينة بدقة الميكروثانية.
* `timestamp_ns` ([UInt64](/ar/reference/data-types/int-uint)) — الطابع الزمني للحظة أخذ العينة بالنانوثانية.
* `revision` ([UInt32](/ar/reference/data-types/int-uint)) — رقم build revision الخاص بـ ClickHouse server. عند الاتصال بالخادم باستخدام `clickhouse-client`، سترى سلسلة مشابهة لـ `Connected to ClickHouse server version 19.18.1.`. يحتوي هذا الحقل على `revision`، وليس `version` الخاص بالخادم.
* `trace_type` ([Enum8('Real' = 0, 'CPU' = 1, 'Memory' = 2, 'MemorySample' = 3, 'MemoryPeak' = 4, 'ProfileEvent' = 5, 'JemallocSample' = 6, 'MemoryAllocatedWithoutCheck' = 7, 'Instrumentation' = 8)](/ar/reference/data-types/enum)) — نوع التتبّع: يمثّل `Real` جمع stack traces وفق wall-clock time. ويمثّل `CPU` جمع stack traces وفق وقت CPU. ويمثّل `Memory` جمع allocations وdeallocations عندما يتجاوز تخصيص الذاكرة الـ watermark التالي. ويمثّل `MemorySample` جمع allocations وdeallocations عشوائيًا. ويمثّل `MemoryPeak` جمع تحديثات peak memory usage. ويمثّل `ProfileEvent` جمع الزيادات في profile events. ويمثّل `JemallocSample` جمع عينات jemalloc. ويمثّل `MemoryAllocatedWithoutCheck` جمع عمليات التخصيص الكبيرة (>16MiB) مع تجاهل أي memory limit (لمطوري ClickHouse فقط). ويمثّل `Instrumentation` traces التي جُمعت عبر instrumentation المُنفَّذ بواسطة XRay.
* `cpu_id` ([UInt64](/ar/reference/data-types/int-uint)) — معرّف CPU.
* `thread_id` ([UInt64](/ar/reference/data-types/int-uint)) — معرّف thread.
* `thread_name` ([LowCardinality(String)](/ar/reference/data-types/lowcardinality)) — اسم thread.
* `query_id` ([String](/ar/reference/data-types/string)) — معرّف الاستعلام الذي يمكن استخدامه للحصول على تفاصيل عن استعلام كان قيد التشغيل من system table المسماة query\_log.
* `trace` ([Array(UInt64)](/ar/reference/data-types/array)) — stack trace عند لحظة أخذ العينة. كل عنصر هو عنوان ذاكرة افتراضية داخل server process الخاص بـ ClickHouse.
* `size` ([Int64](/ar/reference/data-types/int-uint)) — بالنسبة إلى أنواع التتبّع Memory وMemorySample وMemoryAllocatedWithoutCheck وMemoryPeak، فهو مقدار الذاكرة المخصّصة، أما بالنسبة إلى أنواع التتبّع الأخرى فقيمته 0.
* `ptr` ([UInt64](/ar/reference/data-types/int-uint)) — عنوان الـ chunk المخصّص.
* `memory_context` ([Enum8('Unknown' = -1, 'Global' = 0, 'User' = 1, 'Process' = 2, 'Thread' = 3, 'Max' = 4)](/ar/reference/data-types/enum)) — سياق memory tracker (فقط لـ Memory/MemoryPeak): يكون سياق `Unknown` غير معرّف لهذا `trace_type`. ويمثّل `Global` سياق الخادم. ويمثّل `User` سياق المستخدم/الدمج. ويمثّل `Process` سياق العملية (أي الاستعلام). ويمثّل `Thread` سياق thread (thread الخاصة بعملية معيّنة). أما `Max` فهي قيمة خاصة تعني أن memory tracker غير محظور (للعمود blocked\_context).
* `memory_blocked_context` ([Enum8('Unknown' = -1, 'Global' = 0, 'User' = 1, 'Process' = 2, 'Thread' = 3, 'Max' = 4)](/ar/reference/data-types/enum)) — السياق الذي يكون فيه متتبّع الذاكرة موقوفًا (لمطوري ClickHouse فقط): سياق `Unknown` غير معرّف لهذا `trace_type`. يشير `Global` إلى سياق الخادم. ويشير `User` إلى سياق المستخدم/الدمج. ويشير `Process` إلى سياق العملية (أي الاستعلام). ويشير `Thread` إلى سياق الخيط (خيط العملية المعنية). أما `Max` فهي قيمة خاصة تعني أن متتبّع الذاكرة غير موقوف (لعمود `blocked_context`).
* `event` ([LowCardinality(String)](/ar/reference/data-types/lowcardinality)) — بالنسبة إلى نوع التتبّع ProfileEvent، فهذا هو اسم حدث profile الذي تم تحديثه، أما في أنواع التتبّع الأخرى فهو سلسلة فارغة.
* `increment` ([Int64](/ar/reference/data-types/int-uint)) — بالنسبة إلى نوع التتبّع ProfileEvent، فهذا هو مقدار الزيادة في حدث profile، أما في أنواع التتبّع الأخرى فهو 0.
* `symbols` ([Array(LowCardinality(String))](/ar/reference/data-types/array)) — إذا كان تحويل الرموز إلى أسماء مفعّلًا، فسيحتوي على أسماء الرموز بعد فك تشويهها، المقابلة لـ `trace`. يمكن تفعيل تحويل الرموز إلى أسماء أو تعطيله في الإعداد `symbolize` ضمن `trace_log` في ملف تهيئة الخادم.
* `lines` ([Array(LowCardinality(String))](/ar/reference/data-types/array)) — إذا كان تحويل الرموز إلى أسماء مفعّلًا، فسيحتوي على سلاسل تضم أسماء الملفات مع أرقام الأسطر، المقابلة لـ `trace`.
* `function_id` ([Nullable(Int32)](/ar/reference/data-types/nullable)) — بالنسبة إلى نوع التتبّع Instrumentation، فهذا هو المعرّف المُسنَد إلى الدالة في القسم xray\_instr\_map من ملف ELF الثنائي.
* `function_name` ([Nullable(String)](/ar/reference/data-types/nullable)) — بالنسبة إلى نوع التتبّع Instrumentation، فهذا هو اسم الدالة التي خضعت للـ instrumentation.
* `handler` ([Nullable(String)](/ar/reference/data-types/nullable)) — بالنسبة إلى نوع التتبّع Instrumentation، فهذا هو handler الخاص بالدالة التي خضعت للـ instrumentation.
* `entry_type` ([Nullable(Enum8('Entry' = 0, 'Exit' = 1))](/ar/reference/data-types/nullable)) — بالنسبة إلى نوع التتبّع Instrumentation، فهذا هو نوع الإدخال للدالة التي خضعت للـ instrumentation.
* `duration_nanoseconds` ([Nullable(UInt64)](/ar/reference/data-types/nullable)) — بالنسبة إلى نوع التتبّع Instrumentation، فهذا هو الزمن الذي استغرقتْه الدالة أثناء التشغيل، بالنانوثانية.

**الأسماء المستعارة:**

* `build_id` — اسم مستعار لـ `'E2EEB60ED9503BFFA825B628D480CCDC40B2D416'`.

يمكن تفعيل أو تعطيل التحويل إلى رموز في `symbolize` ضمن `trace_log` في ملف تهيئة الخادم.

<div id="example">
  ## مثال
</div>

```sql theme={null}
SELECT * FROM system.trace_log LIMIT 1 \G
```

```text theme={null}
Row 1:
──────
hostname:                clickhouse.eu-central1.internal
event_date:              2025-11-11
event_time:              2025-11-11 11:53:59
event_time_microseconds: 2025-11-11 11:53:59.128333
timestamp_ns:            1762862039128333000
revision:                54504
trace_type:              Instrumentation
cpu_id:                  19
thread_id:               3166432 -- 3.17 million
query_id:                ef462508-e189-4ea2-b231-4489506728e8
trace:                   [350594916,447733712,447742095,447727324,447726659,221642873,450882315,451852359,451905441,451885554,512404306,512509092,612861767,612863269,612466367,612455825,137631896259267,137631896856768]
size:                    0
ptr:                     0
memory_context:          Unknown
memory_blocked_context:  Unknown
event:
increment:               0
symbols:                 ['StackTrace::StackTrace()','DB::InstrumentationManager::createTraceLogElement(DB::InstrumentationManager::InstrumentedPointInfo const&, XRayEntryType, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l>>>) const','DB::InstrumentationManager::profile(XRayEntryType, DB::InstrumentationManager::InstrumentedPointInfo const&)','DB::InstrumentationManager::dispatchHandlerImpl(int, XRayEntryType)','DB::InstrumentationManager::dispatchHandler(int, XRayEntryType)','__xray_FunctionEntry','DB::QueryMetricLog::startQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l>>>, unsigned long)','DB::logQueryStart(std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l>>> const&, std::__1::shared_ptr<DB::Context> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned long, std::__1::shared_ptr<DB::IAST> const&, DB::QueryPipeline const&, DB::IInterpreter const*, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool)','DB::executeQueryImpl(char const*, char const*, std::__1::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum, std::__1::unique_ptr<DB::ReadBuffer, std::__1::default_delete<DB::ReadBuffer>>&, std::__1::shared_ptr<DB::IAST>&, std::__1::shared_ptr<DB::ImplicitTransactionControlExecutor>, std::__1::function<void ()>)','DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum)','DB::TCPHandler::runImpl()','DB::TCPHandler::run()','Poco::Net::TCPServerConnection::start()','Poco::Net::TCPServerDispatcher::run()','Poco::PooledThread::run()','Poco::ThreadImpl::runnableEntry(void*)','start_thread','__clone3']
lines:                   ['./build/../src/Common/StackTrace.cpp:395','./src/Common/StackTrace.h:62','./contrib/llvm-project/libcxx/include/__memory/shared_ptr.h:738','./build/./src/Interpreters/InstrumentationManager.cpp:257','./build/./src/Interpreters/InstrumentationManager.cpp:225','/home/ubuntu/ClickHouse/ClickHouse/build/programs/clickhouse','./build/./src/Interpreters/QueryMetricLog.cpp:0','./contrib/llvm-project/libcxx/include/__memory/shared_ptr.h:667','./build/./src/Interpreters/executeQuery.cpp:0','./build/./src/Interpreters/executeQuery.cpp:0','./contrib/llvm-project/libcxx/include/__memory/shared_ptr.h:744','./contrib/llvm-project/libcxx/include/__memory/shared_ptr.h:583','./build/../base/poco/Net/src/TCPServerConnection.cpp:54','../contrib/llvm-project/libcxx/include/__memory/unique_ptr.h:80','./build/../base/poco/Foundation/src/ThreadPool.cpp:219','../base/poco/Foundation/include/Poco/AutoPtr.h:77','/home/ubuntu/ClickHouse/ClickHouse/build/programs/clickhouse','/home/ubuntu/ClickHouse/ClickHouse/build/programs/clickhouse']
function_id:             231255
function_name:           DB::QueryMetricLog::startQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l>>>, unsigned long)
handler:                 profile
entry_type:              Exit
duration_nanoseconds:   58435
```

<div id="chrome-event-trace-format">
  ## التحويل إلى تنسيق تتبّع الأحداث في Chrome
</div>

يمكن تحويل بيانات تحليل الأداء إلى تنسيق تتبّع الأحداث في Chrome باستخدام الاستعلام التالي. احفظ الاستعلام في ملف `chrome_trace.sql`:

```sql theme={null}
WITH traces AS (
    SELECT * FROM system.trace_log
    WHERE event_date >= today() AND trace_type = 'Instrumentation' AND handler = 'profile'
    ORDER BY event_time, entry_type
)
SELECT
    format(
        '{{"traceEvents": [{}\n]}}',
        arrayStringConcat(
            groupArray(
                format(
                    '\n{{"name": "{}", "cat": "clickhouse", "ph": "{}", "ts": {}, "pid": 1, "tid": {}, "args": {{"query_id": "{}", "cpu_id": {}, "stack": [{}]}}}},',
                    function_name,
                    if(entry_type = 0, 'B', 'E'),
                    timestamp_ns/1000,
                    toString(thread_id),
                    query_id,
                    cpu_id,
                    arrayStringConcat(arrayMap((x, y) -> concat('"', x, ': ', y, '", '), lines, symbols))
                )
            )
        )
    )
FROM traces;
```

وتشغيله باستخدام ClickHouse Client لتصديره إلى ملف `trace.json` يمكن استيراده إما عبر [Perfetto](https://ui.perfetto.dev/) أو [speedscope](https://www.speedscope.app/).

```bash theme={null}
echo $(clickhouse client --query "$(cat chrome_trace.sql)") > trace.json
```

يمكننا حذف جزء المكدس إذا أردنا تتبّعًا أكثر اختصارًا لكنه أقل إفادة.

<div id="see-also">
  ## انظر أيضًا
</div>

* [SYSTEM INSTRUMENT](/ar/reference/statements/system#instrument) — أضف نقاط القياس أو أزلها.
* [system.instrumentation](/ar/reference/system-tables/instrumentation) — استعرض نقاط القياس المُضافة.
* [system.symbols](/ar/reference/system-tables/symbols) — استعرض الرموز لإضافة نقاط القياس إليها.
