KILL QUERY وKILL MUTATION.
افتراضيًا، لا يُرفع أي استثناء عند عدم وجود مطابقات. لجعل KILL QUERY يرفع استثناءً عندما لا يُبقي تعبير WHERE الخاص به أي صفوف مؤهلة في system.processes بعد استبعاد عبارة KILL الحالية، وجعل KILL MUTATION يرفع استثناءً عندما لا يطابق تعبير WHERE الخاص به أي صف في system.mutations، اضبط kill_throw_if_noop على true.
لا يرفع التنفيذ باستخدام ON CLUSTER استثناءً عند عدم وجود مطابقات، لأن نتائج المطابقة لا تُجمَّع عبر المضيفين.
KILL QUERY
WHERE ضمن استعلام KILL.
أمثلة:
أولًا، ستحتاج إلى الحصول على قائمة الاستعلامات غير المكتملة. يعرض استعلام SQL هذا هذه القائمة مرتبةً حسب الأطول تشغيلًا:
قائمة من عقدة ClickHouse واحدة:
SELECT على system.processes إلغاء استعلامه الخاص بتحديد معرّفه:
KILL QUERY WHERE query_id = '<id>'. إذا لم يكن لدى المستخدم هذا الإذن ولا إذن KILL QUERY، فإن تحديد معرّف استعلام
ليس قيد التشغيل باسمه لا يُلغي أي استعلام ولا يُرجع أي صفوف، بدلًا من الإبلاغ عن خطأ، ما لم يكن
الإعداد kill_throw_if_noop مفعّلًا، إذ يُبلَّغ حينئذٍ
عن العملية عديمة الأثر على هيئة استثناء؛ أما المستخدم الذي لديه إذن KILL QUERY دون إذن SELECT المذكور فيُرفَض طلبه لافتقاره إلى إذن SELECT.
ويظل أي شرط آخر في WHERE، وكذلك ON CLUSTER، يتطلب الأذونات الموضّحة أعلاه.
بشكل افتراضي، يُستخدَم الإصدار غير المتزامن من الاستعلامات (ASYNC)، وهو لا ينتظر تأكيدًا على توقّف الاستعلامات.
ينتظر الإصدار المتزامن (SYNC) حتى تتوقف جميع الاستعلامات، ويعرض معلومات عن كل عملية عند توقفها.
تتضمن الاستجابة العمود kill_status، والذي يمكن أن يأخذ القيم التالية:
finished– تم إنهاء الاستعلام بنجاح.waiting– جارٍ انتظار انتهاء الاستعلام بعد إرسال إشارة إليه بإنهائه.- تشرح القيم الأخرى سبب تعذّر إيقاف الاستعلام.
TEST) إلا من صلاحيات المستخدم ويعرض قائمة بالاستعلامات المطلوب إيقافها.
KILL MUTATION
غالبًا ما يشير وجود عمليات mutation تستغرق وقتًا طويلًا أو عمليات mutation غير مكتملة إلى أن خدمة ClickHouse لا تعمل بكفاءة. وقد تتسبب الطبيعة غير المتزامنة لهذه عمليات mutation في استهلاكها جميع الموارد المتاحة على النظام. وقد تحتاج إلى أحد الخيارين التاليين:- إيقاف جميع عمليات mutation الجديدة وعمليات
INSERTوSELECTمؤقتًا، وترك قائمة انتظار عمليات mutation تكتمل. - أو إنهاء بعض هذه عمليات mutation يدويًا بإرسال أمر
KILL.
system.mutations باستخدام عامل التصفية المحدد في عبارة WHERE ضمن استعلام KILL.
استعلام اختباري (TEST) يتحقق فقط من صلاحيات المستخدم ويعرض قائمة بعمليات mutations التي سيتم إيقافها.
أمثلة:
الحصول على count() لعدد عمليات mutations غير المكتملة:
عدد عمليات mutations من عقدة ClickHouse واحدة:
لا يعني العمود
is_killed=1 (في ClickHouse Cloud فقط) في جدول system.mutations بالضرورة أن mutation قد انتهت بالكامل. فقد تظل mutation في حالة يكون فيها is_killed=1 وis_done=0 لفترة طويلة. ويمكن أن يحدث هذا إذا كانت mutation أخرى طويلة التشغيل تحجب mutation التي تم إنهاؤها. هذا وضع طبيعي.