Atomic
Atomic
エンジンは、非ブロッキングのDROP TABLE
およびRENAME TABLE
クエリ、及び原子的なEXCHANGE TABLES
クエリをサポートしています。Atomic
データベースエンジンは、オープンソースのClickHouseでデフォルトで使用されます。
ClickHouse Cloudでは、デフォルトでShared
データベースエンジンが使用されており、前述の操作もサポートしています。
データベースの作成
特殊事項と推奨事項
テーブル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
設定で指定されます。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内の各テーブルに対してユニークなパスが自動的に生成されます。
メタデータディスク
SETTINGS
でdisk
が指定されている場合、そのディスクはテーブルメタデータファイルを保存するために使用されます。
例えば:
未指定の場合、database_disk.disk
で定義されたディスクがデフォルトで使用されます。
参照
- system.databasesシステムテーブル