这些设置可在 system.settings 中查看,并由 源代码 自动生成。
read_in_order_two_level_merge_threshold
类型
UInt64
默认值
100
按主键顺序进行多线程读取时,触发 预合并 步骤所需读取的最少 parts 数量。
read_in_order_use_buffering
类型
Bool
默认值
1
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 24.7 | 1 | 按主键顺序读取时,在合并前先进行缓冲 |
按主键顺序读取时,在合并前先进行缓冲。这样可以提高查询执行的并行度
read_in_order_use_virtual_row
类型
Bool
默认值
1
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.8 | 1 | 默认启用虚拟行优化。在跨多个 parts 按主键顺序读取时,它允许 `MergingSortedTransform` 使用稀疏索引中的主键值重新确定源的优先级,从而避免读取与查询无关的 parts,同时通过最多包含 `max_threads` 个 parts 的有界预读窗口保持并行读取。这可显著降低峰值内存占用(参见 https://github.com/ClickHouse/ClickHouse/issues/52624)。 |
| 24.11 | 0 | 按主键或其单调函数的顺序读取时,使用虚拟行。在跨多个 parts 搜索时,这很有用,因为只会访问相关的部分。 |
按主键或其单调函数的顺序读取时,使用虚拟行。在跨多个 parts 搜索时,只会读取实际能对结果产生贡献的 parts,同时通过最多包含 max_threads 个 parts 的有界预读窗口保持并行读取。
read_in_order_use_virtual_row_per_block
类型
Bool
默认值
0
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.4 | 0 | 在按序读取期间,每读取一个块后就发出一条虚拟行,以便 `MergingSortedTransform` 更频繁地重新调整各源的优先级。 |
当与 read_in_order_use_virtual_row 一起启用时,每读取一个块后都会发出一条虚拟行 (而不仅仅是在每个 parts 的开头) 。
这使 MergingSortedTransform 能更频繁地重新调整各源的优先级,这在下游过滤器丢弃大量行、且数据在各个 parts 之间分布不均时尤其有用。
请注意,这会禁用读取时的 read_in_order_use_buffering 优化和预合并 (read_in_order_two_level_merge_threshold) 。