الانتقال إلى المحتوى الرئيسي

الوصف

يحتوي الجدول على معلومات حول التعديلات في جداول 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) — التاريخ والوقت اللذان أُرسل فيهما أمر التعديل للتنفيذ.
  • block_numbers.partition_id (Array(String)) — بالنسبة إلى تعديلات الجداول المكررة، تحتوي المصفوفة على معرّفات الأقسام (سجل واحد لكل قسم). أما بالنسبة إلى تعديلات الجداول غير المكررة، فتكون المصفوفة فارغة.
  • block_numbers.number (Array(Int64)) — بالنسبة إلى تعديلات الجداول المكررة، تحتوي المصفوفة على سجل واحد لكل قسم، مع رقم block الذي حصل عليه التعديل. ولن تُعدَّل داخل القسم إلا الأجزاء التي تحتوي على blocks بأرقام أقل من هذا الرقم. في الجداول غير المكررة، تشكّل أرقام blocks في جميع الأقسام تسلسلًا واحدًا. وهذا يعني أنه بالنسبة إلى تعديلات الجداول غير المكررة، سيحتوي العمود على سجل واحد يتضمن رقم block واحدًا حصل عليه التعديل.
  • 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) — تاريخ ووقت أحدث فشل في تعديل part.
  • latest_fail_reason (String) — رسالة الاستثناء التي تسببت في أحدث فشل في تعديل part.

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

لمتابعة التقدّم في جدول system.mutations، استخدم الاستعلام التالي:
SELECT * FROM clusterAllReplicas('cluster_name', 'system', 'mutations')
WHERE is_done = 0 AND table = 'tmp';

-- or

SELECT * FROM clusterAllReplicas('cluster_name', 'system.mutations')
WHERE is_done = 0 AND table = 'tmp';
ملاحظة: يتطلب هذا أذونات القراءة على جداول system.*.
استخدام Cloudفي ClickHouse Cloud، يتضمن الجدول system.mutations على كل عقدة جميع عمليات التعديل في العنقود، لذلك لا حاجة إلى clusterAllReplicas.

انظر أيضًا

آخر تعديل في ٢٥ يونيو ٢٠٢٦