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

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

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を使用する必要はありません。

関連項目