apply_deleted_mask
启用后会过滤掉通过轻量级 DELETE 删除的行。若禁用,查询仍可读取这些行。这对调试和“取消删除”场景很有用apply_mutations_on_fly
如果为 true,则尚未在数据分区片段中 materialized 的变更 (UPDATE 和 DELETE) 会在 SELECT 查询时应用。apply_prewhere_after_final
启用后,对于 ReplacingMergeTree 及类似引擎,PREWHERE 条件将在 FINAL 处理后应用。 当 PREWHERE 引用了在重复行之间可能取值不同的列时,这会很有用, 因为你可能希望先由 FINAL 选出最终保留的行,再进行过滤。禁用时,PREWHERE 会在读取期间应用。 注意:只要行策略因apply_row_policy_after_final 而被延后,无论此设置取值如何,PREWHERE 也会随之延后,
因为必须先应用行策略,再应用 PREWHERE。当策略表达式是非确定性的、读取了不在 ORDER BY 中的列,
或读取了类型为浮点类型或包含浮点类型的 ORDER BY 列时,就会出现这种情况。
可能的值:
- 0 — PREWHERE 在 FINAL 之前应用,除非被延后的行策略导致其一并延后 (默认) 。
- 1 — PREWHERE 在 FINAL 之后应用。
apply_row_policy_after_final
启用后,对于 *MergeTree 表,行策略会在 FINAL 处理之后应用。 (尤其是 ReplacingMergeTree) 当策略以这种方式延后应用时,PREWHERE 也会随之延后,以确保策略仍然先于 PREWHERE 应用 (如需无条件延后 PREWHERE,请参见apply_prewhere_after_final) 。
禁用后,行策略会在 FINAL 之前应用;当策略
过滤掉本应在 ReplacingMergeTree 或类似引擎中用于去重的行时,可能会导致结果不同。
如果行策略表达式是确定性的,并且仅依赖 ORDER BY 中的非浮点列,出于优化考虑,它仍会
在 FINAL 之前应用,因为这种过滤不会影响去重结果。浮点列
或包含浮点数的列 (例如 Tuple(Float64, ...)、Array(Float64)、Nullable(Float64) 等)
会被排除在外,因为 -0.0 和 0.0 在去重时被视为同一个键,而策略条件却能区分二者。
可能的值:
- 0 — 行策略在 FINAL 之前应用。
- 1 — 行策略在 FINAL 之后应用 (默认) 。
apply_settings_from_server
客户端是否接受来自服务器的设置。 这只会影响在客户端执行的操作,尤其是 INSERT 输入数据的解析和查询结果的格式化。大多数查询执行都发生在服务器上,不受此设置影响。 通常,这个设置应在用户 profile 中设置 (通过 users.xml 或ALTER USER 之类的查询) ,而不是通过客户端来设置 (客户端命令行参数、SET 查询,或 SELECT 查询中的 SETTINGS 部分) 。通过客户端可以将其改为 false,但不能改为 true (因为如果用户 profile 中设置了 apply_settings_from_server = false,服务器就不会发送这些设置) 。
请注意,最初 (24.12) 使用的是一个服务器设置 (send_settings_to_client) ,但后来为提升易用性,它被这个客户端设置取代了。
apply_string_filters_during_scan
将String 列上的子串搜索条件从 PREWHERE 下推到列扫描中。
当 PREWHERE 条件中包含一个在 String (或 Nullable(String)) 列中搜索非空子串的合取项
(LIKE、position、startsWith、endsWith,或与非空字符串的相等比较) 时,读取器会在反序列化过程中
逐一检查每个值是否满足该条件,并将不匹配的值读取为空字符串。由于不匹配值的数据不会被复制到列中,因此当条件的选择性较高时,
可以加快读取速度并降低内存使用量。查询结果不受影响,
因为包含不匹配值的行必然会被 PREWHERE 过滤掉,而此类条件永远不会匹配空字符串。
如果运行时发现该过滤器的选择性不高,则会自适应地将其禁用。
此外,该设置还允许 WHERE 到 PREWHERE 优化移动子串搜索条件 (LIKE、position、startsWith、endsWith) ,
即使这些条件用到了查询中的所有列 (通常这样做没有意义,但启用此设置后,扫描本身的开销会降低) 。
基于同样的原因,与常量字符串的相等比较不会被移动:若它已位于 PREWHERE 中,仍会在扫描期间应用。
支持从 MergeTree 表以及 Parquet 格式读取数据。
请注意,为自动决定是否使用并行副本而收集的输入字节数估算值
(RuntimeDataflowStatisticsInputBytes) 基于已读取块在内存中的大小,因此当值被替换为空字符串时,
该估算值会低于实际从磁盘读取的数据量。
可选值:
- 0 — 禁用。
- 1 — 启用。