system.mutations
このテーブルには、MergeTree テーブルに対するミューテーションと、その進行状況に関する情報が含まれます。各ミューテーションコマンドは 1 行で表現されます。
Columns:
database(String) — ミューテーションが適用されたデータベースの名前。table(String) — ミューテーションが適用されたテーブルの名前。mutation_id(String) — ミューテーションのID。レプリケートされたテーブルの場合、これらのIDはClickHouse Keeperの<table_path_in_clickhouse_keeper>/mutations/ディレクトリ内のznode名に対応します。レプリケートされていないテーブルの場合、IDはテーブルのデータディレクトリ内のファイル名に対応します。command(String) — ミューテーションコマンド文字列(ALTER TABLE [db.]tableの後のクエリ部分)。create_time(DateTime) — ミューテーションコマンドが実行のために送信された日時。block_numbers.partition_id(Array(String)) — レプリケートされたテーブルのミューテーションの場合、配列にはパーティションのID(各パーティションに1つのレコード)が含まれます。レプリケートされていないテーブルのミューテーションの場合、配列は空です。block_numbers.number(Array(Int64)) — レプリケートされたテーブルのミューテーションの場合、配列には各パーティションに対して1つのレコードが含まれ、ミューテーションによって取得されたブロック番号が格納されます。パーティション内では、この番号より小さい番号のブロックを含むパートのみがミューテーションされます。レプリケートされていないテーブルでは、すべてのパーティションのブロック番号が単一のシーケンスを形成します。つまり、レプリケートされていないテーブルのミューテーションの場合、この列にはミューテーションによって取得された単一のブロック番号を持つ1つのレコードが含まれます。parts_to_do_names(Array(String)) — ミューテーションを完了するためにミューテーションする必要があるデータパートの名前の配列。parts_to_do(Int64) — ミューテーションを完了するためにミューテーションする必要があるデータパートの数。is_killed(UInt8) — ミューテーションが強制終了されたかどうかを示します。ClickHouse Cloudでのみ利用可能です。
注記
is_killed=1は、必ずしもミューテーションが完全に終了したことを意味するわけではありません。is_killed=1かつis_done=0の状態が長期間続くことがあります。これは、別の長時間実行されているミューテーションが強制終了されたミューテーションをブロックしている場合に発生する可能性があります。これは正常な状況です。
is_done(UInt8) — ミューテーションが完了しているかどうかを示すフラグ。可能な値:1ミューテーションが完了している場合、0ミューテーションがまだ処理中の場合。
注記
parts_to_do = 0であっても、長時間実行されているINSERTクエリがミューテーションする必要がある新しいデータパートを作成するため、レプリケートされたテーブルのミューテーションがまだ完了していない可能性があります。
一部のデータパートのミューテーションに問題があった場合、以下の列に追加情報が含まれます:
latest_failed_part(String) — ミューテーションできなかった最新のパートの名前。latest_fail_time(DateTime) — 最新のパートミューテーション失敗の日時。latest_fail_reason(String) — 最新のパートミューテーション失敗の原因となった例外メッセージ。
ミューテーションの監視
system.mutationsテーブルで進行状況を追跡するには、以下のクエリを使用します:
注:これにはsystem.*テーブルに対する読み取り権限が必要です。
Cloudでの使用
ClickHouse Cloudでは、各ノードのsystem.mutationsテーブルにクラスタ内のすべてのミューテーションが含まれているため、clusterAllReplicasを使用する必要はありません。
関連項目
- ミューテーション
- MergeTreeテーブルエンジン
- ReplicatedMergeTreeファミリー