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,可以确保数据得到准确、完整的复制。