本文将介绍 ByteHouse 支持设置的查询参数和表参数。
如下表格介绍了本文中使用的术语。
名称 | 介绍 |
---|---|
worker | 用户计算组的节点。 |
Dedup | 删除重复数据(Deduplication),是唯一键引擎为保证数据唯一性,通过去重来实现目标结果。 |
Dedup task | 去重任务,由 dedup worker 选出去重任务,被选中的数据块(data parts)会由 dedup 任务执行完成后可见。 |
Dedup worker | 去重计算节点,用于选择和执行 dedup 任务的运行实例,默认选择账户级别的写计算组。 |
Staging area | 数据暂存区,位于默认缓存或智能缓存中;可来实现去重数据的攒批和批处理。 |
Staged part | 暂存区的数据块,位于默认缓存或智能缓存中;存储在暂存区的 part 数据,对查询不可见。 |
参数名 | 参数类型 | 可选值 | 无配置默认值 | 参数说明 |
---|---|---|---|---|
enable_point_lookup_profile | Bool | true/false | false | 是否使用点查 profile,用于优化点查效率。 |
enable_unique_partial_update | Bool | true/false | true | 是否使用部分列更新模式。需要配合表级同名参数来使用,当且仅当该参数和表级都开启时部分列更新模式生效。 |
partial_update_enable_row_level_defaults | Bool | true/false | true | 当部分列更新时,未更新的列用行级默认值填充。 |
staging_area_wait_mode | StagingAreaWaitMode | no_wait/wait_txn_visible | no_wait | 开启暂存区后,数据写入模式。no_wait 表示异步写入模式,wait_txn_visible 表示同步写入模式。 |
enable_staging_area_for_write | Bool | true/false | false | 是否开启暂存区,可支持异步写入或者并发写入优化场景。 |
optimize_unique_table_write | Bool | true/false | false | 唯一键表 insert select 导入优化,仅当未开启暂存区且 dedup_impl_version='dedup_in_txn_commit' 时建议开启。 |
max_insert_threads | UInt64 | 正整数 | 0 | worker 执行 insert select 请求的写入线程池大小。 |
min_insert_block_size_bytes | UInt64 | 正整数 | 1073710080 | Insert select 攒批 block 块的最小大小。 |
min_insert_block_size_rows | UInt64 | 正整数 | 1048545 | Insert select 攒批 block 块的最小行数。 |
参数名 | 参数类型 | 可选值 | 无配置默认值 | 参数说明 |
---|---|---|---|---|
唯一键表去重相关 | ||||
unique_table_dedup_threads | MaxThreads | 不超过 core 数的整数值 | 8 | 每个 dedup 任务执行时会拆成不同去重粒度的子任务,该参数可配置执行这些子任务的线程池大小。 |
cloud_enable_staging_area | Bool | true/false | false | 是否开启暂存区,可支持异步写入或者并发写入优化场景。 |
cloud_staging_area_wait_mode | StagingAreaWaitMode | no_wait/wait_txn_visible | no_wait | 开启暂存区后,数据写入模式。no_wait 表示异步写入模式,wait_txn_visible 表示同步写入模式。 |
min_check_txn_staging_area_visible_interval | UInt64 | 整数 | 50 | 开启暂存区,且写入模式为 wait_txn_visible 时,轮询数据是否已经可见的最小检查间隔,单位为毫秒(ms)。 |
max_check_txn_staging_area_visible_interval | UInt64 | 整数 | 1000 | 开启暂存区,且写入模式为 wait_txn_visible 时,轮询数据是否已经可见的最大检查间隔,单位为毫秒(ms)。 |
max_dedup_worker_number | UInt64 | 整数 | 1 | Dedup worker 的数量,建议和 cnch_vw_write 设置的计算组 pod 数对齐。 |
pick_dedup_worker_by_mod | Bool | true/false | false | Dedup worker 的分布模式,配置为 true 时按计算组的节点总数取模可以保证分布均匀;默认为 false 时按照 hash 值分布,不一定均匀。 |
max_staged_part_number_per_task | UInt64 | 整数 | 100 | 每个选出的 dedup task 最大的 staged part 数量。 |
max_staged_part_rows_per_task | UInt64 | 整数 | 15000000 | 每个选出的 dedup task 最大的 staged part 总行数。 |
dedup_impl_version | DedupImplVersion | dedup_in_write_suffix/ | dedup_in_write_suffix | 去重实现,dedup_in_write_suffix 在写入阶段结束时执行去重逻辑;dedup_in_txn_commit 在事务预提交阶段执行去重逻辑,为优化版本。 |
后台任务相关 | ||||
enable_addition_bg_task | Bool | true/false | false | 是否允许更多的 merge 任务同时运行。 |
max_partition_for_multi_select | UInt64 | 整数 | 10 | merge 任务会先选分区( partitions),再从分区中选范围(range),如果是分区很多通常需要将这个值调大。 |
max_addition_bg_task_num | UInt64 | 整数 | 32 | 限制最大并发的后台任务数量。 |
cnch_merge_enable_batch_select | Bool | true/false | true | batch_select 会每轮(round)选一大批范围,之后的轮次会直接提交(submit)这些范围,缩短 merge 操作的触发周期,从而让总任务量真正达到并发上限。 |
cnch_merge_max_total_rows_to_merge | UInt64 | 整数 | 50000000 | 单个 merged part 的最大行数。 |
部分列更新功能相关 | ||||
enable_unique_partial_update | Bool | true/false | false | 表是否开启部分列更新能力。 |
partial_update_max_process_parts | UInt64 | 整数 | 100 | 部分列更新执行任务时会按照该参数切分子任务。 |
partial_update_query_parts_thread_size | MaxThreads | 不超过 core 数的整数值 | 8 | 部分列更新任务执行时读历史数据的线程池大小。 |
partial_update_replace_columns_thread_size | MaxThreads | 不超过 core 数的整数值 | 8 | 部分列更新模式下,替换列阶段的线程池大小。 |
partial_update_replace_if_not_null | Bool | true/false | false | 部分列更新模式下,只有当非 null 值时执行更新操作。 |