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
はテーブルを使用している実行中の SELECT
、INSERT
、その他のクエリが完了するのを待ちます。テーブルは使用中でない時に削除されます。
EXCHANGE TABLES/DICTIONARIES
EXCHANGE
クエリは、テーブルまたはディクショナリを原子に入れ替えます。例えば、次の非原子的な操作の代わりに:
原子性のあるものを使用できます:
Atomic データベースにおける ReplicatedMergeTree
ReplicatedMergeTree
テーブルの場合、ZooKeeper内のパスとレプリカ名のためのエンジンパラメータを指定しないことが推奨されます。この場合、設定パラメータ default_replica_path
および default_replica_name
が使用されます。エンジンパラメータを明示的に指定したい場合は、{uuid}
マクロを使用することが推奨されます。これにより、ZooKeeper内の各テーブルに対してユニークなパスが自動的に生成されます。
参照
- system.databases システムテーブル