الاستعلام في ClickHouse Cloudتُخزَّن بيانات جدول النظام هذا محليًا على كل عقدة في ClickHouse Cloud. لذلك، يتطلب الحصول على رؤية كاملة لجميع البيانات استخدام الدالة
clusterAllReplicas. راجع هنا لمزيد من التفاصيل.الوصف
يخزن البيانات الوصفية والإحصاءات الخاصة بالاستعلامات المنفذة، مثل وقت البدء، والمدة، ورسائل الخطأ، واستخدام الموارد، وغيرها من تفاصيل التنفيذ. ولا يخزن نتائج الاستعلامات. يمكنك تغيير إعدادات تسجيل الاستعلامات في قسم query_log ضمن إعدادات الخادوم. يمكنك تعطيل تسجيل الاستعلامات عن طريق تعيين log_queries = 0. ولا نوصي بإيقاف التسجيل لأن المعلومات الموجودة في هذا الجدول مهمة لحل المشكلات. تُحدد فترة تفريغ البيانات في المعلَمةflush_interval_milliseconds ضمن قسم إعدادات الخادوم query_log. ولإجبار التفريغ، استخدم الاستعلام SYSTEM FLUSH LOGS.
لا يحذف ClickHouse البيانات من الجدول تلقائيًا. راجع المقدمة لمزيد من التفاصيل.
يسجل الجدول system.query_log نوعين من الاستعلامات:
- الاستعلامات الأولية (ذات المستوى الأعلى).
- الاستعلامات الفرعية التي بدأت بواسطة استعلامات أخرى، بما في ذلك استعلامات التنفيذ الموزع والاستعلامات الفرعية الداخلية، مثل تقييم العروض. وبالنسبة إلى هذه الاستعلامات، تُعرض معلومات الاستعلام الأولي الأصلي في الأعمدة
initial_*.
is_initial_query = 1 كلما استعلمت من system.query_log. يستبعد هذا الاستعلامات الفرعية حتى لا تُحتسب خطوات المعالجة الفردية بشكل منفصل عن الاستعلام الأولي. ولا يعني هذا المرشح أن الاستعلام قُدّم بواسطة عميل، إذ يمكن أن يكون العمل الداخلي للخادوم أيضًا استعلامًا أوليًا.
استخدم initial_query_id بدلًا من ذلك عندما تحتاج إلى تتبع استعلام أولي مع الاستعلامات الفرعية التي تحتفظ بمعرّفه. تكون للاستعلام الأولي القيمة نفسها لكل من initial_query_id وquery_id، بينما تحتفظ الاستعلامات الفرعية في السلسلة نفسها بقيمة initial_query_id الخاصة بالاستعلام الأولي ويكون لها query_id خاص بها. لا ترتبط كل الأعمال التي ينشئها استعلام أولي بهذه الطريقة: يمكن للعمل الذي يوزّعه الخادوم أن يبدأ سلسلة استعلام أولي جديدة بقيمة initial_query_id جديدة، كما هو الحال مع عمليات التوزيع البعيدة لـ QueryRunner.
system.query_log على كل عقدة، مثلًا باستخدام clusterAllReplicas.
ينشئ كل استعلام صفًا واحدًا أو صفين في جدول query_log، وذلك بحسب حالة الاستعلام (راجع العمود type):
- إذا نجح تنفيذ الاستعلام، يُنشأ صفّان بالنوعين
QueryStartوQueryFinish. - إذا حدث خطأ أثناء معالجة الاستعلام، يُنشأ حدثان بالنوعين
QueryStartوExceptionWhileProcessing. - إذا حدث خطأ قبل بدء تنفيذ الاستعلام، يُنشأ حدث واحد بالنوع
ExceptionBeforeStart.
query_log.
يمكنك استخدام الإعداد log_formatted_queries لتسجيل الاستعلامات المنسقة في العمود formatted_query.
من الآمن اقتطاع هذا الجدول أو حذفه في أي وقت.
الأعمدة
hostname(LowCardinality(String)) — اسم المضيف للخادم الذي ينفّذ الاستعلام.clickhouse_version(LowCardinality(String)) — إصدار خادم ClickHouse الذي أنتج الصف.system_processor(LowCardinality(String)) — معمارية المعالج لخادم ClickHouse الذي أنتج الصف.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(Enum8(‘Unknown’ = 0, ‘TCP’ = 1, ‘HTTP’ = 2, ‘gRPC’ = 3, ‘MySQL’ = 4, ‘PostgreSQL’ = 5, ‘Local’ = 6, ‘TCP_Interserver’ = 7, ‘Prometheus’ = 8, ‘Background’ = 9, ‘ArrowFlight’ = 10)) — الواجهة التي بدأ منها الاستعلام، كما أبلغ عنها العميل. تكونUnknownإذا لم تكن الواجهة المُبلَّغ عنها من الواجهات التي يتعرّف عليها هذا الخادم.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(Enum8(‘UNKNOWN’ = 0, ‘GET’ = 1, ‘POST’ = 2, ‘OPTIONS’ = 3, ‘PUT’ = 4, ‘DELETE’ = 5, ‘HEAD’ = 6)) — طريقة HTTP التي بدأ بها الاستعلام. تكونUNKNOWNإذا لم يصل الاستعلام عبر HTTP، أو إذا لم تكن الطريقة المُبلَّغ عنها من الطرق التي يتعرّف عليها هذا الخادم.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.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(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))) — الامتيازات الناقصة أثناء تنفيذ الاستعلام.used_number_of_joins(UInt64) — عدد عمليات الربط الفعلية المنفَّذة لهذا الاستعلام. يُجمَع هذا العدد من مسارات التنفيذ أثناء بنائها، لذا فهو يعكس عمليات الربط المتبقية بعد تطبيق جميع التحسينات، لا عدد عبارات JOIN في نص الاستعلام. تُحتسب عملية الربط مهما كان عمق تداخلها: فالاستعلامات الفرعية، وتعبيرات الجدول الشائعة، والعروض، والعروض المبنية على عروض أخرى، واستعلام SELECT الخاص بعرض مُجسَّد يُشغِّله INSERT، كلها تُسجَّل في صف الاستعلام المُرسَل، ولذلك قد تكون هذه القيمة غير صفرية لاستعلام لا يتضمن نصه أي JOIN إطلاقًا. أما الاستعلام الذي يبني مسار تنفيذ دون تشغيله، مثل EXPLAIN PIPELINE، فيُبلغ عن عمليات الربط في الاستعلام الذي يشرحه. تُجمَّع بعض مسارات التنفيذ أكثر من مرة أثناء تشغيل استعلام واحد: إذ يُجمَّع استعلام SELECT الخاص بالعرض المُجسَّد لكل كتلة من كتل INSERT الذي يُشغّله ولكل تدفق إدراج، ويُجمَّع العضو التعاودي في تعبير الجدول الشائع التعاودي في كل تكرار، وتُجمَّع علاقة الحلقة من جديد في كل مرة يُعاد تشغيلها. ومع ذلك تُحتسب عمليات الربط في مثل هذا المسار مرة واحدة فقط، لذا يصف هذا العدد الاستعلام نفسه لا عدد مرات تجميع مسارات تنفيذه.used_join_algorithms(Array(LowCardinality(String))) — خوارزميات عمليات الربط المحتسبة في used_number_of_joins: ‘HASH’، ‘PARALLEL_HASH’، ‘GRACE_HASH’، ‘PARTIAL_MERGE’، ‘FULL_SORTING_MERGE’، ‘PARALLEL_FULL_SORTING_MERGE’، ‘IE_JOIN’، ‘DIRECT’، ‘PASTE’ و’CONSTANT’، مرتبةً ومن دون تكرار، بحيث تظهر الخوارزمية المشتركة بين عدة عمليات ربط مرة واحدة فقط. وهي الخوارزمية التي اختيرت فعليًا لتنفيذ كل عملية ربط، لا الخوارزميات التي يسمح بها الإعداد join_algorithm. وقد تُستبدل خوارزمية بأخرى في منتصف التنفيذ، وفي هذه الحالة يُبلَّغ عن كلتيهما.used_join_kinds(Array(LowCardinality(String))) — أنواع عمليات الربط المحتسبة في used_number_of_joins، بعنصر واحد لكل عملية ربط، بحيث يظهر النوع المشترك بين عدة عمليات ربط عدة مرات. وتكون العناصر مرتبة، لا وفق ترتيب التنفيذ. وكل نوع هو النوع الذي نُفِّذ فعليًا، وقد يختلف عمّا في نص الاستعلام، لأن المُحسِّن قد ينفّذ عملية الربط بعد تبديل طرفيها فيتحوّل LEFT إلى RIGHT.used_join_strictness(Array(LowCardinality(String))) — صرامة عمليات الربط المحتسبة في used_number_of_joins، بعنصر واحد لكل عملية ربط، وبالترتيب نفسه المتبع في used_join_kinds: أي أن العنصر عند فهرس معيّن يصف عملية الربط نفسها في كلتا المصفوفتين.spilled_to_disk(Array(LowCardinality(String))) — العوامل التي كتبت بيانات إلى ملفات مؤقتة على القرص (المعالجة في الذاكرة الخارجية) أثناء تنفيذ الاستعلام، مرتبةً ومن دون تكرار. وتعني المصفوفة الفارغة أن الاستعلام نُفِّذ بالكامل في الذاكرة.transaction_id(Tuple(UInt64, UInt64, UUID, Int64)) — معرّف المعاملة التي نُفِّذ هذا الاستعلام ضمن نطاقها.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).
أمثلة
مثال بسيطsystem.query_log محليًا على كل عقدة؛ ولرؤية جميع الإدخالات، يجب الاستعلام عبر clusterAllReplicas.
على سبيل المثال، لتجميع صفوف query_log من كل نسخة متماثلة في العنقود المسمّى “default”، يمكنك كتابة ما يلي:
انظر أيضًا
- system.query_thread_log — يحتوي هذا الجدول على معلومات عن كل خيط تنفيذ خاص بالاستعلام.
- system.session_query_ids — يحتوي هذا الجدول على معرّفات الاستعلامات التي جرى تنفيذها في الجلسة الحالية، وذلك للعثور على استعلاماتك الخاصة في السجل.