الوصف
يحتوي على معرّفات الاستعلامات المنفَّذة في الجلسة الحالية، بحسب ترتيب تنفيذها. استخدمه للعثور على “الاستعلامات التي نفّذتها للتو” فيsystem.query_log دون الحاجة إلى تعيين query_id من جهة العميل أو وسم الاستعلامات بـ log_comment.
نطاق المحتويات محصور بالجلسة: فكل جلسة ترى سجلّها الخاص فقط، ولا تظهر فيها استعلامات الجلسات الأخرى أبدًا.
يُسجَّل معرّف الاستعلام عند بدء الاستعلام، وبالتالي:
- يكون الاستعلام الجاري تنفيذه حاليًا مرئيًا بالفعل عند قراءته من الجدول.
- تُسجَّل الاستعلامات الفاشلة أيضًا - فاسترجاع معرّف استعلام فشل للتو هو من حالات الاستخدام الأساسية.
نطاق الجلسة لكل interface
- اتصالات Native/TCP (
clickhouse-client، وبرامج التشغيل) و**clickhouse-local**: الجلسة هي الاتصال نفسه، لذا يتراكم السجل عبر جميع استعلامات الاتصال، بما في ذلك استدعاءات العميل متعددة الاستعلامات. - HTTP مع المعامل
session_id: يستمر السجل عبر الطلبات التي تمررsession_idنفسه، إلى أن تنتهي صلاحية الجلسة. - HTTP بدون
session_id: كل طلب يمثل جلسة مستقلة بذاته، لذا لا يعرض الجدول سوى الاستعلام الحالي.
حجم السجل
السجل عبارة عن buffer حلقي يحدّه إعداد الجلسةsession_query_ids_history_size (القيمة الافتراضية 1000)؛ وعندما يتجاوز السجل هذا الحجم، تُزال أقدم المدخلات أولاً. ويؤدي ضبطه على 0 إلى تعطيل التسجيل؛ أما المدخلات المسجّلة سابقاً فتبقى في الجدول إلى أن تُقتطع أو تُزال.
يُقرأ الإعداد عند بدء الاستعلام، قبل تحليله، لذا فإن عبارة SETTINGS ضمن الاستعلام نفسه لا تؤثر في ما إذا كان سيُسجَّل أم لا؛ استخدم بدلاً من ذلك SET، أو معامل URL في HTTP، أو ملف تعريف إعدادات.
TRUNCATE
يمسح الأمرTRUNCATE TABLE system.session_query_ids سجل الجلسة الحالية. أما عدّاد التسلسل فلا يُعاد ضبطه، ولذلك لا تُعاد قيم sequence_number أبدًا داخل الجلسة نفسها.
الأعمدة
sequence_number(UInt64) — موضع الاستعلام ضمن الجلسة، ويتزايد تزايدًا مطردًا.query_id(String) — معرّف الاستعلام، ويمكن ضمّه (join) معsystem.query_log.
مثال
نفِّذ بعض الاستعلامات، ثم استرجع تفاصيلها منsystem.query_log:
system.query_log:
See also
- system.query_log - تفاصيل الاستعلامات المُنفَّذة.
- الإعداد
session_query_ids_history_size.