メインコンテンツへスキップ
メインコンテンツへスキップ

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テーブルで進行状況を追跡するには、以下のクエリを使用します:

SELECT * FROM clusterAllReplicas('cluster_name', 'system', 'mutations')
WHERE is_done = 0 AND table = 'tmp';

-- or

SELECT * FROM clusterAllReplicas('cluster_name', 'system.mutations')
WHERE is_done = 0 AND table = 'tmp';

注:これにはsystem.*テーブルに対する読み取り権限が必要です。

Cloudでの使用

ClickHouse Cloudでは、各ノードのsystem.mutationsテーブルにクラスタ内のすべてのミューテーションが含まれているため、clusterAllReplicasを使用する必要はありません。

関連項目