الانتقال إلى المحتوى الرئيسي
الاستعلام في ClickHouse Cloudتُخزَّن بيانات جدول النظام هذا محليًا على كل عقدة في ClickHouse Cloud. لذلك، يتطلب الحصول على رؤية كاملة لجميع البيانات استخدام الدالة clusterAllReplicas. راجع هنا لمزيد من التفاصيل.

الوصف

يخزن البيانات الوصفية والإحصاءات الخاصة بالاستعلامات المنفذة، مثل وقت البدء، والمدة، ورسائل الخطأ، واستخدام الموارد، وغيرها من تفاصيل التنفيذ. ولا يخزن نتائج الاستعلامات. يمكنك تغيير إعدادات تسجيل الاستعلامات في قسم query_log ضمن إعدادات الخادوم. يمكنك تعطيل تسجيل الاستعلامات عن طريق تعيين log_queries = 0. ولا نوصي بإيقاف التسجيل لأن المعلومات الموجودة في هذا الجدول مهمة لحل المشكلات. تُحدد فترة تفريغ البيانات في المعلَمة flush_interval_milliseconds ضمن قسم إعدادات الخادوم query_log. ولإجبار التفريغ، استخدم الاستعلام SYSTEM FLUSH LOGS. لا يحذف ClickHouse البيانات من الجدول تلقائيًا. راجع المقدمة لمزيد من التفاصيل. يسجل الجدول system.query_log نوعين من الاستعلامات:
  1. الاستعلامات الأولية التي شغّلها العميل مباشرة.
  2. الاستعلامات الفرعية التي بدأت بواسطة استعلامات أخرى (لتنفيذ الاستعلامات الموزعة). وبالنسبة إلى هذه الأنواع من الاستعلامات، تُعرض معلومات الاستعلامات الأصلية في الأعمدة initial_*.
ينشئ كل استعلام صفًا واحدًا أو صفين في جدول query_log، وذلك بحسب حالة الاستعلام (راجع العمود type):
  1. إذا نجح تنفيذ الاستعلام، يُنشأ صفّان بالنوعين QueryStart وQueryFinish.
  2. إذا حدث خطأ أثناء معالجة الاستعلام، يُنشأ حدثان بالنوعين QueryStart وExceptionWhileProcessing.
  3. إذا حدث خطأ قبل بدء تنفيذ الاستعلام، يُنشأ حدث واحد بالنوع ExceptionBeforeStart.
يمكنك استخدام الإعداد log_queries_probability لتقليل عدد الاستعلامات المسجلة في جدول query_log. يمكنك استخدام الإعداد log_formatted_queries لتسجيل الاستعلامات المنسقة في العمود formatted_query.

الأعمدة

  • hostname (LowCardinality(String)) — اسم المضيف للخادم الذي ينفّذ الاستعلام.
  • type (Enum8(‘QueryStart’ = 1, ‘QueryFinish’ = 2, ‘ExceptionBeforeStart’ = 3, ‘ExceptionWhileProcessing’ = 4)) — نوع الحدث الذي وقع أثناء تنفيذ الاستعلام. القيم: QueryStart — بدء ناجح لتنفيذ الاستعلام، QueryFinish — انتهاء ناجح لتنفيذ الاستعلام، ExceptionBeforeStart — استثناء قبل بدء تنفيذ الاستعلام، ExceptionWhileProcessing — استثناء أثناء تنفيذ الاستعلام.
  • event_date (Date) — تاريخ بدء الاستعلام.
  • event_time (DateTime) — وقت بدء الاستعلام.
  • event_time_microseconds (DateTime64(6)) — وقت بدء الاستعلام بدقة الميكروثانية.
  • query_start_time (DateTime) — وقت بدء تنفيذ الاستعلام.
  • query_start_time_microseconds (DateTime64(6)) — وقت بدء تنفيذ الاستعلام بدقة الميكروثانية.
  • query_duration_ms (UInt64) — مدة تنفيذ الاستعلام بالمللي ثانية.
  • read_rows (UInt64) — العدد الإجمالي للصفوف المقروءة من جميع الجداول ووظائف الجدول المشاركة في الاستعلام. يشمل ذلك الاستعلامات الفرعية المعتادة، والاستعلامات الفرعية الخاصة بـ IN و JOIN. بالنسبة إلى الاستعلامات الموزعة، يتضمن read_rows العدد الإجمالي للصفوف المقروءة على جميع النسخ المتماثلة. ترسل كل نسخة متماثلة قيمة read_rows الخاصة بها، ويقوم الخادم المُبادِر للاستعلام بتجميع جميع القيم المستلمة والمحلية. لا تؤثر أحجام الذاكرة المؤقتة في هذه القيمة.
  • read_bytes (UInt64) — العدد الإجمالي للبايتات المقروءة من جميع الجداول ووظائف الجدول المشاركة في الاستعلام. يشمل ذلك الاستعلامات الفرعية المعتادة، والاستعلامات الفرعية الخاصة بـ IN و JOIN. بالنسبة إلى الاستعلامات الموزعة، يتضمن read_bytes العدد الإجمالي للبايتات المقروءة على جميع النسخ المتماثلة. ترسل كل نسخة متماثلة قيمة read_bytes الخاصة بها، ويقوم الخادم المُبادِر للاستعلام بتجميع جميع القيم المستلمة والمحلية. لا تؤثر أحجام الذاكرة المؤقتة في هذه القيمة.
  • written_rows (UInt64) — عدد الصفوف التي كتبها الاستعلام، بما في ذلك أي صفوف كتبتها عمليات الإدراج اللاحقة التي شغّلها مسار المعالجة، مثل العروض المادية المرفقة. في حالة الإدراج المتزامن، تُسجَّل هذه الصفوف اللاحقة في الإدخال query_kind = Insert؛ وفي حالة الإدراج غير المتزامن، تُسجَّل في الإدخال query_kind = AsyncInsertFlush، بينما لا يسجّل الإدخال Insert الظاهر للعميل إلا الصفوف المقبولة من العميل. بالنسبة إلى الاستعلامات التي لا تكتب صفوفًا، تكون القيمة 0.
  • written_bytes (UInt64) — عدد البايتات التي كتبها الاستعلام (غير المضغوطة)، بما في ذلك أي بايتات كتبتها عمليات الإدراج اللاحقة التي شغّلها مسار المعالجة، مثل العروض المادية المرفقة. في حالة الإدراج المتزامن، تُسجَّل هذه البايتات اللاحقة في الإدخال query_kind = Insert؛ وفي حالة الإدراج غير المتزامن، تُسجَّل في الإدخال query_kind = AsyncInsertFlush، بينما لا يسجّل الإدخال Insert الظاهر للعميل إلا البايتات المقبولة من العميل. بالنسبة إلى الاستعلامات التي لا تكتب بيانات، تكون القيمة 0.
  • result_rows (UInt64) — عدد الصفوف في نتيجة استعلام SELECT، أو عدد الصفوف التي كتبتها عملية INSERT. في حالة الإدراج المتزامن، يشمل ذلك الصفوف التي كتبتها عمليات الإدراج اللاحقة التي شغّلها مسار المعالجة (مثل العروض المادية المرفقة) في الإدخال query_kind = Insert؛ وفي حالة الإدراج غير المتزامن، تُسجَّل تلك الصفوف اللاحقة في الإدخال query_kind = AsyncInsertFlush، بينما لا يسجّل الإدخال Insert الظاهر للعميل إلا الصفوف المقبولة من العميل.
  • result_bytes (UInt64) — حجم ذاكرة RAM بالبايتات المستخدم لتخزين نتيجة الاستعلام.
  • memory_usage (UInt64) — استهلاك الاستعلام للذاكرة.
  • current_database (LowCardinality(String)) — اسم قاعدة البيانات الحالية.
  • query (String) — نص الاستعلام.
  • formatted_query (String) — نص الاستعلام المنسّق.
  • normalized_query_hash (UInt64) — قيمة hash رقمية متطابقة، على سبيل المثال، للاستعلامات التي لا تختلف إلا في قيم الثوابت الحرفية.
  • query_kind (LowCardinality(String)) — نوع الاستعلام.
  • databases (Array(LowCardinality(String))) — أسماء قواعد البيانات الموجودة في الاستعلام.
  • tables (Array(LowCardinality(String))) — أسماء الجداول الموجودة في الاستعلام.
  • columns (Array(LowCardinality(String))) — أسماء الأعمدة الموجودة في الاستعلام.
  • partitions (Array(LowCardinality(String))) — أسماء التقسيمات الموجودة في الاستعلام.
  • projections (Array(LowCardinality(String))) — أسماء الإسقاطات المستخدمة أثناء تنفيذ الاستعلام.
  • views (Array(LowCardinality(String))) — أسماء العروض (المجسّدة أو الحية) الموجودة في الاستعلام.
  • exception_code (Int32) — رمز الاستثناء.
  • exception (String) — رسالة الاستثناء.
  • stack_trace (String) — تتبّع المكدس. تكون سلسلة فارغة إذا اكتمل الاستعلام بنجاح.
  • is_initial_query (UInt8) — نوع الاستعلام. القيم الممكنة: 1 — بدأ العميل الاستعلام، 0 — بدأ هذا الاستعلامَ استعلامٌ آخر كجزء من التنفيذ الموزّع للاستعلامات.
  • connection_address (IPv6) — عنوان IP للعميل الذي أُنشئ منه الاتصال. عند الاتصال عبر proxy، سيكون هذا عنوان الـ proxy.
  • connection_port (UInt16) — منفذ العميل الذي أُنشئ منه الاتصال. عند الاتصال عبر proxy، سيكون هذا منفذ الـ proxy.
  • user (LowCardinality(String)) — اسم المستخدم الذي بدأ الاستعلام الحالي.
  • query_id (String) — معرّف الاستعلام.
  • address (IPv6) — عنوان IP الذي استُخدم لإجراء الاستعلام. عند الاتصال عبر proxy وعند تعيين auth_use_forwarded_address، سيكون هذا عنوان العميل بدلًا من الـ proxy.
  • port (UInt16) — منفذ العميل الذي استُخدم لإجراء الاستعلام. عند الاتصال عبر proxy وعند تعيين auth_use_forwarded_address، سيكون هذا منفذ العميل بدلًا من الـ proxy.
  • initial_user (LowCardinality(String)) — اسم المستخدم الذي شغّل الاستعلام الأولي (للتنفيذ الموزّع للاستعلامات).
  • initial_query_id (String) — معرّف الاستعلام الأولي (للتنفيذ الموزّع للاستعلامات).
  • initial_address (IPv6) — عنوان IP الذي أُطلق منه الاستعلام الأب.
  • initial_port (UInt16) — منفذ العميل الذي استُخدم لإجراء الاستعلام الأب.
  • initial_query_start_time (DateTime) — وقت بدء الاستعلام الأولي (للتنفيذ الموزّع للاستعلامات).
  • initial_query_start_time_microseconds (DateTime64(6)) — وقت بدء الاستعلام الأولي بدقة الميكروثانية (للتنفيذ الموزّع للاستعلامات).
  • authenticated_user (LowCardinality(String)) — اسم المستخدم الذي تمت المصادقة عليه في الجلسة.
  • interface (UInt8) — الواجهة التي بدأ منها الاستعلام. القيم الممكنة: 1 — TCP، 2 — HTTP.
  • is_secure (UInt8) — علامة تشير إلى ما إذا كان الاستعلام قد نُفِّذ عبر واجهة آمنة.
  • os_user (LowCardinality(String)) — اسم مستخدم نظام التشغيل الذي يشغّل clickhouse-client.
  • client_hostname (LowCardinality(String)) — اسم مضيف جهاز العميل الذي يعمل عليه clickhouse-client أو عميل TCP آخر.
  • client_name (LowCardinality(String)) — اسم clickhouse-client أو اسم عميل TCP آخر.
  • client_agent (LowCardinality(String)) — وكيل البرمجة بالذكاء الاصطناعي الذي استدعى العميل (على سبيل المثال، claude-code أو cursor)، ويُكتشف من متغيرات البيئة. تكون القيمة فارغة إذا لم يُكتشف أي وكيل.
  • client_revision (UInt32) — المراجعة الخاصة بـ clickhouse-client أو عميل TCP آخر.
  • client_version_major (UInt32) — الإصدار الرئيسي لـ clickhouse-client أو عميل TCP آخر.
  • client_version_minor (UInt32) — الإصدار الثانوي لـ clickhouse-client أو عميل TCP آخر.
  • client_version_patch (UInt32) — مكوّن التصحيح من إصدار clickhouse-client أو عميل TCP آخر.
  • script_query_number (UInt32) — رقم الاستعلام في برنامج نصي يحتوي على عدة استعلامات لـ clickhouse-client.
  • script_line_number (UInt32) — رقم السطر الذي يبدأ عنده الاستعلام في برنامج نصي يحتوي على عدة استعلامات لـ clickhouse-client.
  • http_method (UInt8) — طريقة HTTP التي بدأ بها الاستعلام. القيم الممكنة: 0 — تم تشغيل الاستعلام من واجهة TCP، 1 — استُخدمت طريقة GET، 2 — استُخدمت طريقة POST.
  • http_user_agent (LowCardinality(String)) — ترويسة HTTP ‏UserAgent المُمرَّرة في استعلام HTTP.
  • http_referer (String) — ترويسة HTTP ‏Referer المُمرَّرة في استعلام HTTP (تحتوي على عنوان كامل أو جزئي للصفحة التي تُجري الاستعلام).
  • forwarded_for (String) — ترويسة HTTP ‏X-Forwarded-For المُمرَّرة في استعلام HTTP.
  • quota_key (String) — مفتاح الحصة المحدد في إعداد quotas (انظر keyed).
  • distributed_depth (UInt64) — عدد المرات التي أُعيد فيها توجيه الاستعلام بين الخوادم.
  • revision (UInt32) — مراجعة ClickHouse.
  • log_comment (String) — تعليق السجل. يمكن تعيينه إلى أي سلسلة نصية لا يزيد طولها على max_query_size. وتكون القيمة سلسلة فارغة إذا لم يتم تعريفه.
  • thread_ids (Array(UInt64)) — معرّفات الخيوط المشاركة في تنفيذ الاستعلام. وقد لا تكون هذه الخيوط قد عملت في الوقت نفسه.
  • peak_threads_usage (UInt64) — الحد الأقصى لعدد الخيوط المتزامنة التي تنفذ الاستعلام.
  • ProfileEvents (Map(LowCardinality(String), UInt64)) — قيم ProfileEvents التي تقيس مقاييس مختلفة. ويمكن العثور على وصفها في الجدول system.events.
  • Settings (Map(LowCardinality(String), LowCardinality(String))) — الإعدادات التي غُيّرت عند تشغيل العميل للاستعلام. ولتمكين تسجيل تغييرات الإعدادات، اضبط المعلمة log_query_settings على 1.
  • used_aggregate_functions (Array(LowCardinality(String))) — الأسماء المعيارية للدوال التجميعية التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_aggregate_function_combinators (Array(LowCardinality(String))) — الأسماء القياسية لمُركِّبات الدوال التجميعية التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_database_engines (Array(LowCardinality(String))) — الأسماء القياسية لمحركات قواعد البيانات التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_data_type_families (Array(LowCardinality(String))) — الأسماء القياسية لعائلات أنواع البيانات التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_dictionaries (Array(LowCardinality(String))) — الأسماء القياسية للقواميس التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_formats (Array(LowCardinality(String))) — الأسماء القياسية للتنسيقات التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_functions (Array(LowCardinality(String))) — الأسماء القياسية للدوال التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_storages (Array(LowCardinality(String))) — الأسماء القياسية لوحدات التخزين التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_table_functions (Array(LowCardinality(String))) — الأسماء القياسية لدوال الجداول التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_executable_user_defined_functions (Array(LowCardinality(String))) — الأسماء القياسية للدوال التنفيذية المعرّفة من المستخدم التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_sql_user_defined_functions (Array(LowCardinality(String))) — الأسماء القياسية لدوال SQL المعرّفة من المستخدم التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_row_policies (Array(LowCardinality(String))) — قائمة أسماء سياسات الصفوف التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_privileges (Array(LowCardinality(String))) — الامتيازات التي جرى التحقق منها بنجاح أثناء تنفيذ الاستعلام.
  • missing_privileges (Array(LowCardinality(String))) — الامتيازات الناقصة أثناء تنفيذ الاستعلام.
  • transaction_id (Tuple(UInt64, UInt64, UUID)) — معرّف المعاملة التي نُفِّذ هذا الاستعلام ضمن نطاقها.
  • query_cache_usage (Enum8(‘Unknown’ = 0, ‘None’ = 1, ‘Write’ = 2, ‘Read’ = 3)) — استخدام ذاكرة التخزين المؤقت للاستعلامات أثناء تنفيذ الاستعلام. القيم: ‘Unknown’ = الحالة غير معروفة، ‘None’ = لم تُكتب نتيجة الاستعلام في ذاكرة التخزين المؤقت لنتائج الاستعلام ولم تُقرأ منها، ‘Write’ = كُتبت نتيجة الاستعلام في ذاكرة التخزين المؤقت لنتائج الاستعلام، ‘Read’ = قُرئت نتيجة الاستعلام من ذاكرة التخزين المؤقت لنتائج الاستعلام.
  • asynchronous_read_counters (Map(LowCardinality(String), UInt64)) — المقاييس الخاصة بالقراءة غير المتزامنة.
  • is_internal (UInt8) — يشير إلى ما إذا كان هذا استعلامًا مساعدًا يُنفَّذ داخليًا.
الأسماء المستعارة:
  • ProfileEvents.Names — اسم مستعار لـ mapKeys(ProfileEvents).
  • ProfileEvents.Values — اسم مستعار لـ mapValues(ProfileEvents).
  • Settings.Names — اسم مستعار لـ mapKeys(Settings).
  • Settings.Values — اسم مستعار لـ mapValues(Settings).

أمثلة

مثال بسيط
SELECT * FROM system.query_log WHERE type = 'QueryFinish' ORDER BY query_start_time DESC LIMIT 1 FORMAT Vertical;
Row 1:
──────
hostname:                              clickhouse.eu-central1.internal
type:                                  QueryFinish
event_date:                            2021-11-03
event_time:                            2021-11-03 16:13:54
event_time_microseconds:               2021-11-03 16:13:54.953024
query_start_time:                      2021-11-03 16:13:54
query_start_time_microseconds:         2021-11-03 16:13:54.952325
query_duration_ms:                     0
read_rows:                             69
read_bytes:                            6187
written_rows:                          0
written_bytes:                         0
result_rows:                           69
result_bytes:                          48256
memory_usage:                          0
current_database:                      default
query:                                 DESCRIBE TABLE system.query_log
formatted_query:
normalized_query_hash:                 8274064835331539124
query_kind:
databases:                             []
tables:                                []
columns:                               []
projections:                           []
views:                                 []
exception_code:                        0
exception:
stack_trace:
is_initial_query:                      1
user:                                  default
query_id:                              7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
address:                               ::ffff:127.0.0.1
port:                                  40452
initial_user:                          default
initial_query_id:                      7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
initial_address:                       ::ffff:127.0.0.1
initial_port:                          40452
initial_query_start_time:              2021-11-03 16:13:54
initial_query_start_time_microseconds: 2021-11-03 16:13:54.952325
interface:                             1
os_user:                               sevirov
client_hostname:                       clickhouse.eu-central1.internal
client_name:                           ClickHouse
client_revision:                       54449
client_version_major:                  21
client_version_minor:                  10
client_version_patch:                  1
http_method:                           0
http_user_agent:
http_referer:
forwarded_for:
quota_key:
revision:                              54456
log_comment:
thread_ids:                            [30776,31174]
ProfileEvents:                         {'Query':1,'NetworkSendElapsedMicroseconds':59,'NetworkSendBytes':2643,'SelectedRows':69,'SelectedBytes':6187,'ContextLock':9,'RWLockAcquiredReadLocks':1,'RealTimeMicroseconds':817,'UserTimeMicroseconds':427,'SystemTimeMicroseconds':212,'OSCPUVirtualTimeMicroseconds':639,'OSReadChars':894,'OSWriteChars':319}
Settings:                              {'load_balancing':'random','max_memory_usage':'10000000000'}
used_aggregate_functions:              []
used_aggregate_function_combinators:   []
used_database_engines:                 []
used_data_type_families:               []
used_dictionaries:                     []
used_formats:                          []
used_functions:                        []
used_storages:                         []
used_table_functions:                  []
used_executable_user_defined_functions:[]
used_sql_user_defined_functions:       []
used_privileges:                       []
missing_privileges:                    []
query_cache_usage:                     None
مثال في Cloud في ClickHouse Cloud، يكون system.query_log محليًا على كل عقدة؛ ولرؤية جميع الإدخالات، يجب الاستعلام عبر clusterAllReplicas. على سبيل المثال، لتجميع صفوف query_log من كل نسخة متماثلة في العنقود المسمّى “default”، يمكنك كتابة ما يلي:
SELECT * 
FROM clusterAllReplicas('default', system.query_log)
WHERE event_time >= now() - toIntervalHour(1)
LIMIT 10
SETTINGS skip_unavailable_shards = 1;

انظر أيضًا

  • system.query_thread_log — يحتوي هذا الجدول على معلومات عن كل خيط تنفيذ خاص بالاستعلام.
آخر تعديل في ٢٥ يونيو ٢٠٢٦