ClickHouse/docs/ja/faq/operations/delete-old-data.md
2024-11-18 11:58:58 +09:00

3.9 KiB
Raw Blame History

slug title toc_hidden toc_priority
/ja/faq/operations/delete-old-data ClickHouseテーブルから古いレコードを削除できますか true 20

ClickHouseテーブルから古いレコードを削除できますか

短い答えは「はい」です。ClickHouseは、古いデータを削除してディスクスペースを解放するための複数の仕組みを提供しています。各仕組みは異なるシナリオに対応しています。

有効期限 (TTL)

ClickHouseは、条件が発生したときに自動的に値を削除することを可能にします。この条件は、通常はタイムスタンプカラムに対する固定オフセットとして、任意のカラムに基づく式として設定されます。

このアプローチの主要な利点は、TTLが設定されると、データの削除がバックグラウンドで自動的に行われ、外部システムがトリガーを必要としないことです。

:::note TTLは、データを/dev/nullに移動するだけでなく、SSDからHDDへのように、異なるストレージシステム間でのデータの移動にも使用できます。 :::

有効期限 (TTL) の設定に関する詳細情報。

DELETE FROM

DELETE FROMは、ClickHouseでの標準的なDELETEクエリの実行を可能にします。フィルタ句で対象とされた行は削除としてマークされ、将来の結果セットから除外されます。行のクリーンアップは非同期で行われます。

:::note DELETE FROMは、バージョン23.3以降で一般に使用可能です。古いバージョンではエクスペリメンタルであり、以下の設定で有効化する必要があります:

SET allow_experimental_lightweight_delete = true;

:::

ALTER DELETE

ALTER DELETEは非同期バッチ操作を使用して行を削除します。DELETE FROMとは異なり、ALTER DELETE後に実行され、バッチ操作が完了する前のクエリは、削除対象の行を含めます。詳細はALTER DELETEドキュメントを参照してください。

ALTER DELETEは柔軟に古いデータを削除するために発行できます。定期的に行う必要がある場合の主な欠点は、クエリを送信する外部システムが必要になることです。また、ミューテーションは削除する行が1つしかない場合でも完全なパーツをリライトするため、一部のパフォーマンス上の考慮事項があります。

これは、ClickHouseを基にしたシステムをGDPR準拠にするための最も一般的なアプローチです。

ミューテーションに関する詳細情報。

パーティションの削除

ALTER TABLE ... DROP PARTITIONは、パーティション全体を削除するためのコスト効率の良い方法です。柔軟性には欠け、テーブル作成時に適切なパーティションスキームの設定が必要ですが、それでも一般的なケースの多くをカバーします。ミューテーションと同様に、定期的に使用するには外部システムから実行する必要があります。

パーティション操作に関する詳細情報。

TRUNCATE

テーブルからすべてのデータを削除することは極端ですが、場合によってはそれが必要なこともあります。

テーブルトランケーションに関する詳細情報。