PostgreSQL の TOASTカラムとは?
テーブル内のTOASTカラムを特定する
TOASTカラムが適切に処理されるようにする
REPLICA IDENTITY を FULL に設定する必要があります。これにより、PostgreSQL は UPDATE および DELETE 操作時に古い行全体を WAL に含めるようになり、すべてのカラムの値 (TOASTカラムを含む) をレプリケーションで利用できるようになります。
次の SQL コマンドを使用して、REPLICA IDENTITY を FULL に設定できます。
REPLICA IDENTITY FULL を設定する際のパフォーマンスに関する考慮事項については、こちらのブログ記事を参照してください。
REPLICA IDENTITY FULL が設定されていない場合のレプリケーション時の挙動
REPLICA IDENTITY FULL が設定されていない場合、ClickHouse へのレプリケーション時に次のような問題が発生することがあります。
- INSERT 操作では、すべてのカラム (TOAST カラムを含む) が正しくレプリケートされます。
-
UPDATE 操作では:
- TOAST カラムが変更されていない場合、その値は ClickHouse では NULL または空として表示されます。
- TOAST カラムが変更された場合は、正しくレプリケートされます。
- DELETE 操作では、TOAST カラムの値は ClickHouse では NULL または空として表示されます。
REPLICA IDENTITY FULL を設定することが重要です。
結論
REPLICA IDENTITY を設定することで、データを正確かつ完全にレプリケーションできます。