CHECK TABLE في ClickHouse لإجراء فحص تحقّق لجدول معيّن أو لأقسامه. وهو يضمن سلامة البيانات من خلال التحقّق من المجاميع الاختبارية وبُنى البيانات الداخلية الأخرى.
وعلى وجه الخصوص، يقارن أحجام الملفات الفعلية بالقيم المتوقعة المخزّنة على الخادم. وإذا لم تتطابق أحجام الملفات مع القيم المخزّنة، فهذا يعني أن البيانات تالفة. وقد يحدث ذلك، على سبيل المثال، بسبب تعطل النظام أثناء تنفيذ الاستعلام.
الصيغة
table_name: يحدّد اسم الجدول الذي تريد التحقق منه.partition_expression: (اختياري) إذا كنت تريد التحقق من قسم محدد من الجدول، يمكنك استخدام هذا التعبير لتحديد القسم.part_name: (اختياري) إذا كنت تريد التحقق من جزء محدد في الجدول، يمكنك إضافة قيمة حرفية نصية لتحديد اسم الجزء.FORMAT format: (اختياري) يتيح لك تحديد format الإخراج للنتيجة.SETTINGS: (اختياري) يتيح لك إضافة إعدادات إضافية.- (اختياري): check_query_single_value_result: يتحكم هذا الإعداد في ما إذا كان الإخراج مفصلًا (
0) أو مُلخّصًا (1). - يمكن أيضًا تطبيق إعدادات أخرى. إذا لم تكن بحاجة إلى ترتيب حتمي للنتائج، يمكنك تعيين max_threads إلى قيمة أكبر من واحد لتسريع الاستعلام.
- (اختياري): check_query_single_value_result: يتحكم هذا الإعداد في ما إذا كان الإخراج مفصلًا (
check_query_single_value_result.
في حال كانت قيمة check_query_single_value_result = 1، تتم إعادة العمود result فقط مع صف واحد. وتكون القيمة داخل هذا الصف 1 إذا نجح فحص السلامة، و0 إذا كانت البيانات تالفة.
عند استخدام check_query_single_value_result = 0، يعيد الاستعلام الأعمدة التالية:
part_path: يشير إلى المسار إلى جزء البيانات أو اسم الملف.is_passed: يعيد 1 إذا نجح الفحص لهذا الجزء، وإلا 0.message: أي رسائل إضافية مرتبطة بالفحص، مثل رسائل الخطأ أو النجاح.
CHECK TABLE محركات الجداول التالية:
يؤدي تنفيذ هذا الاستعلام على جداول تستخدم محركات جداول أخرى إلى ظهور الاستثناء NOT_IMPLEMENTED.
لا توفّر المحركات من عائلة *Log استعادة تلقائية للبيانات عند الفشل. استخدم الاستعلام CHECK TABLE لاكتشاف فقدان البيانات في الوقت المناسب.
أمثلة
CHECK TABLE، بشكل افتراضي، حالة التحقق العامة للجدول:
Query
Response
check_query_single_value_result.
وللتحقق من قسم محدد من الجدول، يمكنك استخدام الكلمة المفتاحية PARTITION.
Query
Response
PART.
Query
Response
Query
Response
تلقّي نتيجة ‘Corrupted’
Query
Response
CHECK TABLE للقسم المحدد، وسيظل يُبلَّغ عن الحالة على أنها ‘is_passed = 1’.
يمكنك التحقق من جميع جداول (Replicated)MergeTree الموجودة دفعةً واحدة باستخدام الاستعلام CHECK ALL TABLES.
إذا كانت البيانات تالفة
- أنشئ جدولًا جديدًا له البنية نفسها للجدول التالف. للقيام بذلك، نفّذ الاستعلام
CREATE TABLE <new_table_name> AS <damaged_table_name>. - اضبط قيمة
max_threadsعلى 1 لمعالجة الاستعلام التالي باستخدام خيط تنفيذ واحد. للقيام بذلك، شغّل الاستعلامSET max_threads = 1. - نفّذ الاستعلام
INSERT INTO <new_table_name> SELECT * FROM <damaged_table_name>. ينسخ هذا الطلب البيانات غير التالفة من الجدول التالف إلى جدول آخر. لن تُنسخ إلا البيانات التي تسبق الجزء التالف. - أعد تشغيل
clickhouse-clientلإعادة ضبط قيمةmax_threads.