メインコンテンツまでスキップ
メインコンテンツまでスキップ

system.mutations

このテーブルは、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) — 最新のパーツミューテーション失敗の原因となった例外メッセージ。

Monitoring Mutations

system.mutations テーブルの進捗を追跡するには、次のようなクエリを使用します - これは、system.*テーブルに対する読み取り権限を必要とします。

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

table='tmp'tmpを、ミューテーションを確認するテーブルの名前に置き換えてください。

参照