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

Atomic

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

注記

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

データベースの作成

特徴と推奨事項

テーブルUUID

Atomic データベース内の各テーブルは、永続的な UUID を持ち、以下のディレクトリにデータを保存します:

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

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

例えば:

注記

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

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 はテーブルを使用している実行中の SELECTINSERT、その他のクエリが完了するのを待ちます。テーブルは使用中でない時に削除されます。

EXCHANGE TABLES/DICTIONARIES

EXCHANGE クエリは、テーブルまたはディクショナリを原子に入れ替えます。例えば、次の非原子的な操作の代わりに:

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

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

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

参照