このテーブルには、MergeTree テーブルの ミューテーション と、その進行状況に関する情報が含まれています。各ミューテーションコマンドは 1 行で表されます。
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レコードが格納され、ミューテーションが取得したblock番号が記録されます。そのパーティション内でミューテーションされるのは、この番号より小さい番号のblockを含むパーツのみです。非レプリケートテーブルでは、すべてのパーティションのblock番号が単一の数列を構成します。したがって、非レプリケートテーブルのミューテーションでは、このカラムにミューテーションが取得した単一のblock番号を持つ1レコードが格納されます。
parts_in_progress_names (Array(String)) — 現在ミューテーション中のデータパーツ名の配列。
parts_to_do_names (Array(String)) — ミューテーションを完了するためにミューテーションが必要なデータパーツ名の配列。
parts_to_do (Int64) — ミューテーションを完了するためにミューテーションが必要なデータパーツ数。注: parts_to_do = 0であっても、ミューテーションが必要となる新しいデータパーツを作成中の長時間実行されているINSERTが原因で、レプリケートテーブルのミューテーションがまだ完了していない場合があります。
parts_postpone_reasons (Map(String, String)) — パーツ名と処理延期の理由のmap。
is_done (UInt8) — ミューテーションが完了したかどうかを示すフラグ。設定可能な値: ミューテーションが完了している場合は1、まだ処理中の場合は0。
is_killed (UInt8) — ミューテーションがkillされたかどうかを示します。ClickHouse Cloudでのみ利用可能です。注: is_killed=1は、ミューテーションが完全に終了したことを必ずしも意味しません。ミューテーションがis_killed=1かつis_done=0の状態で長期間残ることがあります。これは、別の長時間実行中のミューテーションがkillされたミューテーションをブロックしている場合に発生することがあります。これは正常な状況です。
latest_failed_part (String) — ミューテーションできなかった直近のパーツの名前。
latest_fail_time (DateTime) — 直近のパーツミューテーション失敗の日時。
latest_fail_reason (String) — 直近のパーツミューテーション失敗の原因となった例外メッセージ。
latest_fail_error_code_name (String) — 直近のパーツミューテーション失敗の原因となった例外のerror code。
- パーツ名が
parts_postpone_reasonsに含まれず、まだミューテーションされていない場合、そのパーツはまだミューテーション対象としてスケジュールされていません。
- パーツ名
all_partsは、まだミューテーションされていないすべてのパーツを表します。
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 は不要です。