الانتقال إلى المحتوى الرئيسي
يدعم المحرك Atomic استعلامات DROP TABLE وRENAME TABLE غير المعطِّلة، واستعلامات EXCHANGE TABLES الذرّية. ويُستخدم محرك قاعدة البيانات Atomic افتراضيًا في ClickHouse مفتوح المصدر.
في ClickHouse Cloud، يُستخدم أيضًا افتراضيًا محرك قاعدة البيانات Shared“، كما يدعم العمليات المذكورة أعلاه.

إنشاء قاعدة بيانات

CREATE DATABASE test [ENGINE = Atomic] [SETTINGS disk=...];

تفاصيل وتوصيات

معرّف UUID للجدول

لكل جدول في قاعدة البيانات Atomic معرّف معرّف UUID دائم، وتُخزَّن بياناته في الدليل التالي:
/clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/
حيث يشير xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy إلى معرّف UUID الخاص بالجدول. افتراضيًا، يُنشأ معرّف UUID تلقائيًا. ومع ذلك، يمكن للمستخدمين تحديد معرّف UUID صراحةً عند إنشاء جدول، رغم أن ذلك غير مُوصى به. على سبيل المثال:
CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;
يمكنك استخدام الإعداد show_table_uuid_in_table_create_query_if_not_nil لعرض معرّف UUID عبر استعلام SHOW CREATE.

RENAME TABLE

لا تُعدّل استعلامات RENAME معرّف UUID ولا تنقل بيانات الجدول. تُنفَّذ هذه الاستعلامات فورًا ولا تنتظر حتى تكتمل الاستعلامات الأخرى التي تستخدم الجدول.

DROP/DETACH TABLE

عند استخدام DROP TABLE، لا تُزال أي بيانات. يكتفي محرّك Atomic بوضع علامة على الجدول على أنه محذوف، وذلك بنقل البيانات الوصفية الخاصة به إلى /clickhouse_path/metadata_dropped/ وإخطار خيط المعالجة في الخلفية. ويُحدَّد التأخير قبل الحذف النهائي لبيانات الجدول بواسطة إعداد database_atomic_delay_before_drop_table_sec. يمكنك تحديد الوضع المتزامن باستخدام المُعدِّل SYNC. استخدم الإعداد database_atomic_wait_for_drop_and_detach_synchronously لتحقيق ذلك. في هذه الحالة، ينتظر DROP حتى تنتهي استعلامات SELECT وINSERT وغيرها من الاستعلامات الجارية التي تستخدم الجدول. وسيُزال الجدول عندما لا يعود قيد الاستخدام.

EXCHANGE TABLES/DICTIONARIES

يُبدّل استعلام EXCHANGE الجداول أو القواميس تبديلًا ذريًا. على سبيل المثال، بدلًا من هذه العملية غير الذرية:
Non-atomic
RENAME TABLE new_table TO tmp, old_table TO new_table, tmp TO old_table;
يمكنك استخدام قاعدة بيانات بمحرك atomic:
Atomic
EXCHANGE TABLES new_table AND old_table;

ReplicatedMergeTree في قاعدة بيانات atomic

بالنسبة إلى جداول ReplicatedMergeTree، يُنصح بعدم تحديد معلمات المحرك الخاصة بالمسار في ZooKeeper واسم النسخة المتماثلة. في هذه الحالة، ستُستخدم معلمتا الإعداد default_replica_path وdefault_replica_name. وإذا أردت تحديد معلمات المحرك صراحةً، فيُنصح باستخدام ماكرو {uuid}. وهذا يضمن إنشاء مسارات فريدة تلقائيًا لكل جدول في ZooKeeper.

قرص البيانات الوصفية

عند تحديد disk ضمن SETTINGS، يُستخدم القرص لتخزين ملفات البيانات الوصفية للجدول. على سبيل المثال:
CREATE TABLE db (n UInt64) ENGINE = Atomic SETTINGS disk=disk(type='local', path='/var/lib/clickhouse-disks/db_disk');
إذا لم يُحدَّد، فسيُستخدم تلقائيًا القرص المُعرَّف في database_disk.disk.

انظر أيضًا

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