system.mutations
説明
このテーブルには、MergeTreeテーブルに対するミューテーションと、その進行状況に関する情報が含まれます。各ミューテーションコマンドは1つの行として表されます。
カラム:
database(String) — ミューテーション が適用されたデータベース名。table(String) — ミューテーション が適用されたテーブル名。mutation_id(String) — ミューテーション の ID。レプリケートテーブルでは、この ID は ClickHouse Keeper の<table_path_in_clickhouse_keeper>/mutations/ディレクトリ内の znode 名に対応します。非レプリケートテーブルでは、テーブルのデータディレクトリ内のファイル名に対応します。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_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)) — パーツ名と、その処理が延期されている理由のマップ。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) — 直近のパーツ ミューテーション 失敗の原因となった例外のエラーコード。
-
パーツ名が
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.*テーブルに対する読み取り権限が必要です。
ClickHouse Cloudでは、各ノードのsystem.mutationsテーブルにクラスタ内のすべてのミューテーションが含まれているため、clusterAllReplicasを使用する必要はありません。
関連項目
- ミューテーション
- MergeTreeテーブルエンジン
- ReplicatedMergeTreeファミリー