3.9 KiB
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
テーブルからすべてのデータを削除することは極端ですが、場合によってはそれが必要なこともあります。
テーブルトランケーションに関する詳細情報。