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