ClickHouse/docs/ja/engines/database-engines/atomic.md
2024-11-18 11:58:58 +09:00

4.1 KiB
Raw Blame History

slug sidebar_label sidebar_position
/ja/engines/database-engines/atomic Atomic 10

Atomic

非ブロッキングなDROP TABLEおよびRENAME TABLEクエリや、アトミックなEXCHANGE TABLESクエリに対応しています。Atomic データベースエンジンはデフォルトで使用されます。

データベースの作成

CREATE DATABASE test [ENGINE = Atomic];

特徴と推奨事項

テーブル UUID

Atomic データベース内のすべてのテーブルには永続的なUUIDがあり、データはディレクトリ /clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/ に保存されます。ここで xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy はテーブルのUUIDです。通常、UUIDは自動的に生成されますが、テーブル作成時にユーザーが明示的にUUIDを指定することも可能です推奨されません

例:

CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;

:::note 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はテーブルを使用しているSELECTINSERTおよびその他のクエリの終了を待ちます。テーブルは使用されていないときに実際に削除されます。

EXCHANGE TABLES/DICTIONARIES

EXCHANGE クエリは、テーブルまたはディクショナリーをアトミックに交換します。例えば、この非アトミックな操作を行う代わりに:

RENAME TABLE new_table TO tmp, old_table TO new_table, tmp TO old_table;

単一のアトミックなクエリを使用できます:

EXCHANGE TABLES new_table AND old_table;

Atomic データベース内の ReplicatedMergeTree

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

関連項目