Skip to main content

الوصف

يحتوي الجدول على معلومات حول التعديلات في جداول MergeTree ومدى تقدّمها. ويُمثَّل كل أمر تعديل بصف واحد.

الأعمدة:

  • database (String) — اسم قاعدة البيانات التي طُبِّق عليها التعديل.
  • table (String) — اسم الجدول الذي طُبِّق عليه التعديل.
  • mutation_id (String) — معرّف التعديل. بالنسبة إلى الجداول المُكرَّرة، تتوافق هذه المعرّفات مع أسماء عقد znode في الدليل <table_path_in_clickhouse_keeper>/mutations/ ضمن ClickHouse Keeper. أما بالنسبة إلى الجداول غير المُكرَّرة، فتتوافق المعرّفات مع أسماء الملفات في دليل بيانات الجدول.
  • command (String) — سلسلة أوامر التعديل (الجزء من الاستعلام الذي يلي ALTER TABLE [db.]table).
  • create_time (DateTime) — التاريخ والوقت اللذان أُرسل فيهما أمر التعديل للتنفيذ.
  • finish_time (DateTime) — التاريخ والوقت اللذان اكتمل فيهما التعديل. تكون القيمة صفرًا إذا لم يكتمل التعديل بعد أو إذا كان وقت اكتماله غير معروف. بالنسبة إلى الجداول غير المُكرَّرة، تُتتبَّع القيمة في الذاكرة وتُعاد ضبطها عند إعادة تحميل الجدول (مثلًا عند إعادة تشغيل الخادم). أما بالنسبة إلى الجداول المُكرَّرة، فتكون القيمة لكل نسخة متماثلة؛ وبعد إعادة التشغيل، يُستعاد وقت اكتمال أحدث تعديل مكتمل من Keeper، بينما تُظهر التعديلات المكتملة الأقدم القيمة صفرًا.
  • block_numbers.partition_id (Array(String)) — بالنسبة إلى تعديلات الجداول المُكرَّرة، تحتوي المصفوفة على معرّفات الأقسام (سجل واحد لكل قسم). أما بالنسبة إلى تعديلات الجداول غير المُكرَّرة، فتكون المصفوفة فارغة.
  • block_numbers.number (Array(Int64)) — بالنسبة إلى تعديلات الجداول المُكرَّرة، تحتوي المصفوفة على سجل واحد لكل قسم يتضمن رقم الكتلة الذي حصل عليه التعديل. لا تُعدَّل في القسم إلا الأجزاء التي تحتوي على كتل أرقامها أقل من هذا الرقم. في الجداول غير المُكرَّرة، تشكّل أرقام الكتل في جميع الأقسام تسلسلاً واحدًا. وهذا يعني أنه بالنسبة إلى تعديلات الجداول غير المُكرَّرة، سيحتوي العمود على سجل واحد يتضمن رقم كتلة واحدًا حصل عليه التعديل.
  • parts_in_progress_names (Array(String)) — مصفوفة بأسماء أجزاء البيانات التي يجري تعديلها حاليًا.
  • parts_to_do_names (Array(String)) — مصفوفة بأسماء أجزاء البيانات التي يجب تعديلها لإكمال التعديل.
  • parts_to_do (Int64) — عدد أجزاء البيانات التي يجب تعديلها لإكمال التعديل. ملاحظة: حتى إذا كانت قيمة parts_to_do تساوي 0، فقد لا يكون تعديل جدول مُكرَّر قد اكتمل بعد بسبب عملية INSERT طويلة التشغيل تنشئ جزء بيانات جديدًا سيحتاج إلى تعديل.
  • parts_postpone_reasons (Map(String, String)) — خريطة تربط أسماء الأجزاء بأسباب تأجيلها.
  • is_done (UInt8) — علامة تحدد ما إذا كان التعديل قد اكتمل أم لا. القيم الممكنة: 1 إذا اكتمل التعديل، و0 إذا كان لا يزال قيد التنفيذ.
  • is_killed (UInt8) — يشير إلى ما إذا تم إيقاف تعديل. متاح فقط في ClickHouse Cloud. ملاحظة: لا تعني القيمة is_killed=1 بالضرورة أن التعديل قد اكتمل نهائيًا. قد يظل التعديل لفترة طويلة في حالة تكون فيها is_killed=1 وis_done=0. وقد يحدث ذلك إذا كان تعديل آخر طويل التشغيل يحجب التعديل الموقوف. وهذا وضع طبيعي.
  • latest_failed_part (String) — اسم أحدث جزء تعذّر تعديله.
  • latest_fail_time (DateTime) — تاريخ ووقت أحدث فشل في تعديل جزء.
  • latest_fail_reason (String) — رسالة الاستثناء التي تسببت في أحدث فشل في تعديل جزء.
  • latest_fail_error_code_name (String) — رمز خطأ الاستثناء الذي تسبب في أحدث فشل في تعديل جزء.
  • إذا لم يكن اسم الجزء موجودًا في parts_postpone_reasons ولم يُطبَّق عليه تعديل بعد، فهذا يعني أن الجزء لم يُجدوَل بعد للتعديل.
  • يمثّل اسم الجزء all_parts جميع الأجزاء التي لم يُطبَّق عليها تعديل بعد.
  • is_killed (UInt8) — يشير إلى ما إذا كان التعديل قد أُوقِف. متاح فقط في ClickHouse Cloud.
لا تعني القيمة is_killed=1 بالضرورة أن عملية التعديل قد اكتملت بالكامل. قد تظل عملية التعديل في حالة تكون فيها is_killed=1 وis_done=0 لفترة طويلة. قد يحدث ذلك إذا كانت عملية تعديل أخرى طويلة التشغيل تحجب عملية التعديل التي تم إيقافها. هذا وضع طبيعي.
  • is_done (UInt8) — علامة تشير إلى ما إذا كانت عملية التعديل قد اكتملت أم لا. القيم الممكنة:
    • 1 إذا كان التعديل مكتملًا،
    • 0 إذا كان التعديل لا يزال قيد التنفيذ.
حتى إذا كانت قيمة parts_to_do = 0، فقد لا يكون التعديل لجدول مكرر قد اكتمل بعد، بسبب استعلام INSERT طويل التشغيل ينشئ جزء بيانات جديدًا يجب تطبيق التعديل عليه.
إذا كانت هناك مشكلات في تطبيق التعديل على بعض أجزاء البيانات، فستحتوي الأعمدة التالية على معلومات إضافية:
  • latest_failed_part (String) — اسم أحدث جزء تعذّر تطبيق التعديل عليه.
  • latest_fail_time (DateTime) — تاريخ ووقت أحدث فشل في تعديل جزء بيانات.
  • latest_fail_reason (String) — رسالة الاستثناء التي تسببت في أحدث فشل في تعديل جزء بيانات.

مراقبة عمليات التعديل

لمتابعة التقدّم في جدول system.mutations، استخدم الاستعلام التالي:
ملاحظة: يتطلب هذا أذونات القراءة على جداول system.*.
استخدام Cloudفي ClickHouse Cloud، يتضمن الجدول system.mutations على كل عقدة جميع عمليات التعديل في العنقود، لذلك لا حاجة إلى clusterAllReplicas.

انظر أيضًا

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