ClickHouse/docs/ja/managing-data/deletes.md
2024-11-18 11:58:58 +09:00

5.6 KiB
Raw Blame History

slug title description keywords
/ja/deletes データの削除 ClickHouseでデータを削除する方法
削除
トランケート
ドロップ
論理削除

ClickHouseではデータを削除するためのいくつかの方法があり、それぞれに利点とパフォーマンス特性があります。データモデルと削除する予定のデータ量に基づいて適切な方法を選択する必要があります。

方法 構文 使用のタイミング
論理削除 DELETE FROM [table] 小規模なデータを削除する場合に使用します。SELECTクエリからすぐにフィルタリングされますが、最初は内部的に削除済みとしてマークされるだけで、ディスクからは削除されません。
物理削除 ALTER TABLE [table] DELETE ディスクからすぐにデータを削除する必要がある場合に使用します(例:コンプライアンス目的)。SELECTのパフォーマンスに悪影響を及ぼします。
テーブルをトランケート TRUNCATE TABLE [db.table] テーブルからすべてのデータを効率的に削除します。
パーティションをドロップ DROP PARTITION パーティションからすべてのデータを効率的に削除します。

ClickHouseでデータを削除するさまざまな方法の概要は以下の通りです。

論理削除

論理削除により、行は削除済みとしてマークされ、すべての後続のSELECTクエリから自動的にフィルタリングされます。削除された行のその後の削除は自然なマージサイクル中に行われるため、I/Oが少なくなります。そのため、未指定の期間、データは実際にはストレージから削除されず、削除としてマークされるのみです。データが確実に削除されることを保証する必要がある場合は、上記のミューテーションコマンドを検討してください。

-- ミューテーションで2018年のすべてのデータを削除します。推奨されません。
DELETE FROM posts WHERE toYear(CreationDate) = 2018

論理削除ステートメントを使用して大量のデータを削除すると、SELECTクエリのパフォーマンスに悪影響を及ぼす可能性もあります。このコマンドは、プロジェクションを持つテーブルには互換性がありません。

操作には削除された行をマークするためのミューテーション_row_existsカラムを追加に関連したI/Oが生じます。

一般に、削除されたデータがディスク上に存在することが許容される場合(非コンプライアンスケースなど)、論理削除を物理削除よりも優先するべきです。すべてのデータを削除する必要がある場合は、このアプローチは避けるべきです。

論理削除について詳しく読む。

物理削除

論理削除はALTER TABLE … DELETEコマンドを通じて発行できます。例:

-- ミューテーションで2018年のすべてのデータを削除します。推奨されません。
ALTER TABLE posts DELETE WHERE toYear(CreationDate) = 2018

これらは同期的に(非レプリケートのデフォルト)、または非同期的に(mutations_sync設定により決定)実行できます。WHERE式に一致するすべての部分を再書き込みするため、非常にI/Oが多くなります。このプロセスにはアトミック性がなく、部分が準備ができ次第、ミューテーションされた部分に置き換えられます。ミューテーション中に実行されるSELECTクエリは、すでにミューテーションされた部分のデータとまだミューテーションされていない部分のデータの両方を観察します。進行状況の状態はsystems.mutationsテーブルを通して確認できます。これらはI/Oが多い操作であり、クラスタのSELECTパフォーマンスに影響を与える可能性があるため、慎重に使用するべきです。

論理削除について詳しく読む。

テーブルをトランケート

テーブル内のすべてのデータを削除する必要がある場合は、以下のTRUNCATE TABLEコマンドを使用してください。これは論理な操作です。

TRUNCATE TABLE posts

TRUNCATE TABLEについて詳しく読む。

パーティションをドロップ

データにカスタムパーティションキーを指定している場合、パーティションを効率的にドロップできます。高カーディナリティのパーティショニングは避けてください。

ALTER TABLE posts (DROP PARTITION '2008')

DROP PARTITIONについて詳しく読む。

その他のリソース