メインコンテンツまでスキップ
メインコンテンツまでスキップ

Atomic

Atomicエンジンは、ブロックしない DROP TABLE および RENAME TABLE クエリ、ならびに原子性のある EXCHANGE TABLES クエリをサポートします。デフォルトでは、Atomicデータベースエンジンが使用されます。

注記

ClickHouse Cloud では、デフォルトで Replicated データベースエンジンが使用されます。

データベースの作成

特徴と推奨事項

テーブルUUID

Atomicデータベース内の各テーブルには永久的な UUID があり、次のディレクトリにデータを格納します。

ここで xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy はテーブルのUUIDです。

デフォルトでは、UUIDは自動的に生成されます。ただし、ユーザーはテーブルを作成する際にUUIDを明示的に指定できますが、これは推奨されません。

例えば:

注記

SHOW CREATEクエリでUUIDを表示するには、show_table_uuid_in_table_create_query_if_not_nil 設定を使用できます。

RENAME TABLE

RENAME クエリはUUIDを変更したり、テーブルデータを移動したりしません。これらのクエリは即座に実行され、テーブルを使用している他のクエリの完了を待ちません。

DROP/DETACH TABLE

DROP TABLEを使用する場合、データは削除されません。Atomicエンジンは、テーブルを削除されたとマークするだけで、メタデータを/clickhouse_path/metadata_dropped/に移動し、バックグラウンドスレッドに通知します。最終的なテーブルデータの削除までの遅延は、database_atomic_delay_before_drop_table_sec 設定で指定されます。 synchronousモードを指定するには、SYNC修飾子を使用します。これを行うには、database_atomic_wait_for_drop_and_detach_synchronously 設定を使用します。この場合、DROPはテーブルを使用している実行中のSELECTINSERTおよび他のクエリが完了するのを待ちます。テーブルが使用されていないときに削除されます。

EXCHANGE TABLES/DICTIONARIES

EXCHANGE クエリは、テーブルまたはディクショナリを原子性をもって交換します。例えば、この非原子性の操作の代わりに:

原子性のある操作を使用できます:

AtomicデータベースにおけるReplicatedMergeTree

ReplicatedMergeTree テーブルの場合、ZooKeeper内のパスやレプリカ名のためのエンジンパラメータを指定しないことを推奨します。この場合、設定パラメータ default_replica_path および default_replica_name が使用されます。エンジンパラメータを明示的に指定したい場合は、{uuid} マクロを使用することを推奨します。これにより、ZooKeeper内の各テーブルのユニークなパスが自動的に生成されます。

参考情報