メインコンテンツへスキップ
短く答えると、「はい」です。ClickHouseには、古いデータを削除してディスク容量を解放するための仕組みが複数用意されています。それぞれの仕組みは、異なるユースケースを想定しています。

有効期限 (TTL)

ClickHouse では、条件が満たされたときに値を自動的に削除できます。この条件は任意のカラムに基づく式として設定し、通常はタイムスタンプカラムに対する固定オフセットを指定します。 この方法の主な利点は、トリガーするための外部システムが不要なことです。TTL を設定すると、データの削除はバックグラウンドで自動的に行われます。
TTL は、データを /dev/null に移動するだけでなく、SSD から HDD のように異なるストレージシステム間で移動する用途にも使用できます。
詳細は、有効期限 (TTL) の設定を参照してください。

DELETE FROM

DELETE FROM を使用すると、ClickHouse で標準的な DELETE クエリを実行できます。フィルタ句で対象となった行は削除済みとしてマークされ、以降の結果セットには含まれなくなります。行のクリーンアップは非同期で実行されます。
DELETE FROM はバージョン 23.3 以降で一般提供されています。これより前のバージョンでは Experimental であり、次の設定で有効にする必要があります。
SET allow_experimental_lightweight_delete = true;

ALTER DELETE

ALTER DELETE は、非同期のバッチ操作を使用して行を削除します。DELETE FROM とは異なり、ALTER DELETE の実行後、バッチ操作が完了する前に実行されたクエリには、削除対象の行が含まれます。詳細については、ALTER DELETE のドキュメントを参照してください。 ALTER DELETE は、古いデータを柔軟に削除するために実行できます。これを定期的に行う必要がある場合の主な欠点は、クエリを送信するための外部システムが必要になることです。また、削除対象が 1 行だけであっても、mutation では完全なパーツを書き換えるため、パフォーマンス面での考慮も必要です。 これは、ClickHouse ベースのシステムを GDPR に準拠させるための最も一般的なアプローチです。 mutation の詳細も参照してください。

DROP PARTITION

ALTER TABLE ... DROP PARTITION は、パーティション全体を低コストで削除できる方法です。柔軟性はそれほど高くなく、テーブル作成時に適切なパーティション化方式を設定しておく必要がありますが、一般的なユースケースの大半には対応できます。mutation と同じく、通常利用する場合は外部システムから実行する必要があります。 詳しくはパーティションの操作を参照してください。

TRUNCATE

テーブルからすべてのデータを削除するのはかなり大胆な操作ですが、場合によっては、まさにそれが必要になることもあります。 詳細はテーブルの TRUNCATEを参照してください。
最終更新日 2026年6月10日