Skip to main content

الوصف

يعرض للمستخدم الحالي سجلات استعلاماته في سجل الاستعلامات. يقرأ جدول سجل الاستعلامات المُعدّ عبر إعدادَي الخادم query_log.database وquery_log.table (وهو system.query_log افتراضيًا)، ولا يعيد إلا الصفوف التي يطابق فيها المستخدم الذي بدأ الاستعلام currentUser() (يُؤخذ هذا المستخدم من initial_user إذا كان مُعيَّنًا، وإلا فمن user). على خلاف جدول سجل الاستعلامات نفسه، يمكن قراءة system.user_query_log دون أي صلاحيات، ما يتيح للمستخدمين فحص استعلاماتهم الخاصة دون منحهم إمكانية الوصول إلى استعلامات الآخرين. لا يُدعم ذلك إلا إذا كان سجل الاستعلامات مخزنًا محليًا. إذا جرى إعداد query_log.engine كـ Distributed أو أي محرك آخر يفوّض عمليات القراءة إلى خادم آخر، يرفض system.user_query_log القراءة منه ويطرح استثناءً، إذ لا يمكن فرض فحص الوصول المطلوب عبر حدود خادم يستخدم بروتوكول ClickHouse. في هذه الحالة، عطّل الجدول باستخدام query_log.enable_user_query_log = 0. يمكن تعطيل الجدول عبر إعداد الخادم query_log.enable_user_query_log. إذا لم يُعدّ سجل الاستعلامات أو لم يُنشأ جدوله بعد، يكون system.user_query_log فارغًا. تُمرَّر شروط أعمدة التقسيم والمفتاح في سجل الاستعلامات (event_date وevent_time وquery_start_time وquery_id وtype والأعمدة القياسية المشابهة) التي تُقارن بثوابت إلى جدول سجل الاستعلامات الأساسي، لذا تحافظ عمليات البحث العادية، مثل المثال أدناه، على استبعاد الأقسام ولا تفحص السجل المحتفَظ به بالكامل.
إذا كان هناك جدول باسم system.user_query_log أُنشئ قبل الترقية إلى إصدار من ClickHouse يوفّر هذا الجدول، فلن يبدأ الخادم حتى تتم إعادة تسمية الجدول الحالي أو حذفه، أو تعيين query_log.enable_user_query_log إلى 0.

الأعمدة

  • hostname (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، أو عدد الصفوف التي كتبها إدراج. بالنسبة إلى إدراج متزامن، يشمل ذلك الصفوف التي كتبتها عمليات الإدراج اللاحقة التي شغّلها خط المعالجة (مثل العروض المجسدة المرفقة) في الإدخال query_kind = Insert؛ أما بالنسبة إلى إدراج غير متزامن، فتُسجل تلك الصفوف اللاحقة في الإدخال query_kind = AsyncInsertFlush، بينما يسجل الإدخال Insert الموجّه للعميل الصفوف المقبولة من العميل فقط.
  • result_bytes (UInt64) — حجم ذاكرة RAM، بالبايتات، المستخدم لتخزين نتيجة استعلام.
  • memory_usage (UInt64) — استهلاك الذاكرة بواسطة الاستعلام.
  • current_database (String) — اسم قاعدة البيانات الحالية.
  • query (String) — سلسلة الاستعلام.
  • formatted_query (String) — سلسلة الاستعلام المنسقة.
  • normalized_query_hash (UInt64) — قيمة تجزئة رقمية تتطابق، على سبيل المثال، بين الاستعلامات التي تختلف فقط في قيم الثوابت الحرفية.
  • query_kind (String) — نوع الاستعلام.
  • databases (Array(String)) — أسماء قواعد البيانات الواردة في الاستعلام.
  • tables (Array(String)) — أسماء الجداول الواردة في الاستعلام.
  • columns (Array(String)) — أسماء الأعمدة الواردة في الاستعلام.
  • partitions (Array(String)) — أسماء الأقسام الواردة في الاستعلام.
  • projections (Array(String)) — أسماء الإسقاطات المستخدمة أثناء تنفيذ الاستعلام.
  • views (Array(String)) — أسماء العروض (المادية أو الحية) الواردة في الاستعلام.
  • exception_code (Int32) — رمز الاستثناء.
  • exception (String) — رسالة الاستثناء.
  • stack_trace (String) — تتبع المكدس. تكون سلسلة فارغة إذا اكتمل الاستعلام بنجاح.
  • is_initial_query (UInt8) — نوع الاستعلام. القيم الممكنة: 1 — بدأ العميل الاستعلام، 0 — بدأ استعلام آخر هذا الاستعلام كجزء من تنفيذ استعلام موزع.
  • connection_address (IPv6) — عنوان IP للعميل الذي أُجري الاتصال منه. عند الاتصال عبر وكيل، يكون هذا عنوان الوكيل.
  • connection_port (UInt16) — منفذ العميل الذي أُجري الاتصال منه. عند الاتصال عبر وكيل، يكون هذا منفذ الوكيل.
  • user (String) — اسم المستخدم الذي بدأ الاستعلام الحالي.
  • query_id (String) — معرّف الاستعلام.
  • address (IPv6) — عنوان IP المستخدم لإجراء الاستعلام. عند الاتصال عبر وكيل وتعيين auth_use_forwarded_address، يكون هذا عنوان العميل بدلاً من عنوان الوكيل.
  • port (UInt16) — منفذ العميل المستخدم لإجراء الاستعلام. عند الاتصال عبر وكيل وتعيين auth_use_forwarded_address، يكون هذا منفذ العميل بدلاً من منفذ الوكيل.
  • initial_user (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 (String) — اسم المستخدم الذي تمت مصادقته في الجلسة.
  • interface (UInt8) — الواجهة التي بدأ منها الاستعلام. القيم الممكنة: 1 — TCP، 2 — HTTP.
  • is_secure (UInt8) — علامة تشير إلى ما إذا كان الاستعلام قد نُفِّذ عبر واجهة آمنة
  • os_user (String) — اسم مستخدم نظام التشغيل الذي يشغّل clickhouse-client.
  • client_hostname (String) — اسم مضيف جهاز العميل الذي يعمل عليه clickhouse-client أو عميل TCP آخر.
  • client_name (String) — اسم clickhouse-client أو عميل TCP آخر.
  • client_agent (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، 4 — استُخدمت طريقة PUT، 5 — استُخدمت طريقة DELETE، 6 — استُخدمت طريقة HEAD.
  • http_user_agent (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.
  • http_handler_name (String) — اسم معالج HTTP المعرّف بلغة SQL ‏(CREATE HANDLER) الذي استدعى الاستعلام. تكون القيمة فارغة إذا لم يُستدعَ الاستعلام عبر هذا المعالج.
  • http_request_url (String) — مسار طلب HTTP (دون سلسلة الاستعلام) الذي استدعى الاستعلام. تُحذف سلسلة الاستعلام كي لا تُحفظ معلمات الطلب الحساسة. تكون القيمة فارغة للاستعلامات غير التابعة لـ HTTP.
  • log_comment (String) — تعليق السجل. يمكن ضبطه على سلسلة نصية عشوائية لا تتجاوز max_query_size. تكون القيمة سلسلة فارغة إذا لم يُعرَّف.
  • thread_ids (Array(UInt64)) — معرّفات الخيوط المشاركة في تنفيذ الاستعلام. قد لا تكون هذه الخيوط قد عملت بالتزامن.
  • peak_threads_usage (UInt64) — الحد الأقصى لعدد الخيوط التي تنفذ الاستعلام بالتزامن.
  • ProfileEvents (Map(String, UInt64)) — أحداث ProfileEvents التي تقيس مقاييس مختلفة. يمكن العثور على وصفها في جدول system.events.
  • Settings (Map(String, String)) — الإعدادات التي غُيّرت عند تشغيل العميل للاستعلام. لتمكين تسجيل التغييرات على الإعدادات، اضبط المعلمة log_query_settings على 1.
  • used_aggregate_functions (Array(String)) — الأسماء المعيارية لدوال التجميع التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_aggregate_function_combinators (Array(String)) — الأسماء المعيارية لمُركِّبات دوال التجميع التي استُخدمت أثناء تنفيذ الاستعلام.
  • used_database_engines (Array(String)) — الأسماء الأساسية لمحركات قواعد البيانات المُستخدمة أثناء تنفيذ الاستعلام.
  • used_data_type_families (Array(String)) — الأسماء الأساسية لعائلات أنواع البيانات المُستخدمة أثناء تنفيذ الاستعلام.
  • used_dictionaries (Array(String)) — الأسماء الأساسية للقواميس المُستخدمة أثناء تنفيذ الاستعلام.
  • used_formats (Array(String)) — الأسماء الأساسية للتنسيقات المُستخدمة أثناء تنفيذ الاستعلام.
  • used_functions (Array(String)) — الأسماء الأساسية للدوال المُستخدمة أثناء تنفيذ الاستعلام.
  • used_storages (Array(String)) — الأسماء الأساسية لمكوّنات التخزين المُستخدمة أثناء تنفيذ الاستعلام.
  • used_table_functions (Array(String)) — الأسماء الأساسية لدوال الجداول المُستخدمة أثناء تنفيذ الاستعلام.
  • used_executable_user_defined_functions (Array(String)) — الأسماء الأساسية للدوال المعرّفة من المستخدم القابلة للتنفيذ والمُستخدمة أثناء تنفيذ الاستعلام.
  • used_sql_user_defined_functions (Array(String)) — الأسماء الأساسية للدوال المعرّفة من المستخدم بلغة SQL والمُستخدمة أثناء تنفيذ الاستعلام.
  • used_row_policies (Array(String)) — قائمة أسماء سياسات الصفوف المُستخدمة أثناء تنفيذ الاستعلام.
  • used_privileges (Array(String)) — الامتيازات التي تم التحقق منها بنجاح أثناء تنفيذ الاستعلام.
  • missing_privileges (Array(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(String, UInt64)) — مقاييس القراءة غير المتزامنة.
  • is_internal (UInt8) — يشير إلى ما إذا كان الاستعلام مساعدًا ويُنفّذ داخليًا.
الأسماء البديلة:
  • ProfileEvents.Names — اسم بديل لـ mapKeys(ProfileEvents).
  • ProfileEvents.Values — اسم بديل لـ mapValues(ProfileEvents).
  • Settings.Names — اسم بديل لـ mapKeys(Settings).
  • Settings.Values — اسم بديل لـ mapValues(Settings).

مثال

آخر تعديل في ١٤ أغسطس ٢٠٢٦