deduplicate_insert
INSERT INTO 的块级去重 (用于 Replicated* 表) 。
此设置同时适用于同步和异步插入,并且会覆盖 insert_deduplicate 和 async_insert_deduplicate 设置。
该设置有三个可能值:
- disable — 对
INSERT INTO查询禁用去重。 - enable — 对
INSERT INTO查询启用去重。 - backward_compatible_choice — 如果针对特定插入类型启用了
insert_deduplicate或async_insert_deduplicate,则启用去重。
INSERT SELECT 查询,首先会检查 deduplicate_insert_select。去重还要求目标表保留去重日志,参见 replicated_deduplication_window 和 non_replicated_deduplication_window。
deduplicate_insert_select
INSERT SELECT 的块级去重 (适用于 Replicated* 表) 。
对于 INSERT SELECT 查询,会先检查此设置,再检查 deduplicate_insert。
当 SELECT 包含 ORDER BY ALL 且其管道以单个 stream 结束时,该 SELECT 是稳定的。非空的 insert_deduplication_token 可作为稳定性的等效替代。
该设置有四个可能值:
- disable — 对
INSERT SELECT查询禁用去重。 - force_enable — 无论
deduplicate_insert如何,对INSERT SELECT查询启用去重。如果 SELECT 结果不稳定且未提供标记,则会抛出异常。 - enable_when_possible — 如果
deduplicate_insert启用了去重且 SELECT 结果稳定,则启用去重;否则禁用。 - enable_even_for_bad_queries - 如果
deduplicate_insert启用了去重,则启用去重,无论 SELECT 结果是否稳定。如果 SELECT 结果不稳定,则会记录一条消息,但查询仍会在启用去重的情况下执行。此选项用于向后兼容。建议改用其他选项,因为它可能导致意外结果。