Skip to main content
على الرغم من أن ClickHouse مُصمَّم لأحمال العمل التحليلية كبيرة الحجم، فمن الممكن في بعض الحالات تعديل البيانات الموجودة أو حذفها. تُسمّى هذه العمليات “mutations” وتُنفَّذ باستخدام الأمر ALTER TABLE.
إذا كنت بحاجة إلى تنفيذ تحديثات متكررة، ففكّر في استخدام إزالة التكرار في ClickHouse، إذ يتيح لك ذلك تحديث و/أو حذف الصفوف من دون توليد حدث mutation. وبدلًا من ذلك، استخدم التحديثات خفيفة الوزن أو حذف خفيف

تحديث البيانات

استخدم الأمر ALTER TABLE...UPDATE لتحديث الصفوف في أحد الجداول:
<expression> هي القيمة الجديدة للعمود في الصفوف التي يتحقق فيها <filter_expr>. يجب أن يكون <expression> من نوع بيانات العمود نفسه، أو قابلاً للتحويل إلى نوع البيانات نفسه باستخدام المعامل CAST. ينبغي أن يُرجع <filter_expr> قيمة UInt8 (صفر أو غير صفر) لكل صف من البيانات. يمكن دمج عدة عبارات UPDATE <column> في أمر ALTER TABLE واحد، مفصولة بفواصل. أمثلة:
  1. تتيح عملية mutation كهذه تحديث visitor_ids واستبدالها بقيم جديدة باستخدام lookup في قاموس:
  2. قد يكون تعديل عدة قيم في أمر واحد أكثر كفاءة من تنفيذ عدة أوامر:
  3. يمكن تنفيذ عمليات mutation باستخدام ON CLUSTER للجداول المُقسَّمة إلى shards:
لا يمكن تحديث الأعمدة التي تكون جزءًا من المفتاح الأساسي أو مفتاح الفرز.

حذف البيانات

استخدم الأمر ALTER TABLE لحذف الصفوف:
يجب أن يعيد <filter_expr> قيمة UInt8 لكل صف من البيانات. أمثلة
  1. احذف أي سجلات تكون فيها قيمة أحد الأعمدة ضمن مصفوفة من القيم:
  2. ما الذي يغيّره هذا الاستعلام؟
لحذف جميع البيانات من جدول، من الأكثر كفاءة استخدام الأمر TRUNCATE TABLE [<database].]<table>. ويمكن أيضًا تنفيذ هذا الأمر باستخدام ON CLUSTER.
راجع صفحة توثيق تعليمة DELETE لمزيد من التفاصيل.

عمليات الحذف الخفيفة

خيار آخر لحذف الصفوف هو استخدام الأمر DELETE FROM، ويُشار إليه باسم الحذف الخفيف. تُعلَّم الصفوف المحذوفة فورًا على أنها محذوفة، وتُستبعَد تلقائيًا من جميع الاستعلامات اللاحقة، لذلك لا تحتاج إلى انتظار دمج الأجزاء أو استخدام الكلمة المفتاحية FINAL. ويجري تنظيف البيانات بشكل غير متزامن في الخلفية.
على سبيل المثال، يحذف الاستعلام التالي جميع الصفوف من الجدول hits حيث يحتوي العمود Title على النص hello:
بعض الملاحظات حول الحذف الخفيف:
  • هذه الميزة متاحة فقط لعائلة محركات الجداول MergeTree.
  • يكون الحذف الخفيف متزامنًا افتراضيًا، إذ ينتظر إلى أن تعالج جميع النسخ المتماثلة عملية الحذف. ويخضع هذا السلوك للتحكم من خلال الإعداد lightweight_deletes_sync.
Last modified on June 25, 2026