distributed_background_insert_batch
distributed_directory_monitor_batch_inserts
启用/禁用按批次发送已插入的数据。
启用批次发送后,Distributed 表引擎会尝试在一次操作中发送多个包含已插入数据的文件,而不是分别发送。批次发送能更充分地利用服务器和网络资源,从而提升集群性能。
可能的值:
- 1 — 已启用。
- 0 — 已禁用。
distributed_background_insert_max_sleep_time_ms
distributed_directory_monitor_max_sleep_time_ms
Distributed 表引擎发送数据的最大时间间隔。用于限制 distributed_background_insert_sleep_time_ms 设置中指定时间间隔的指数级增长。
可能的值:
- 以毫秒为单位的正整数。
distributed_background_insert_sleep_time_ms
distributed_directory_monitor_sleep_time_ms
Distributed 表引擎发送数据时使用的基础时间间隔。发生错误时,实际时间间隔会按指数级增长。
可能的值:
- 以毫秒为单位的正整数。
distributed_background_insert_split_batch_on_failure
distributed_directory_monitor_split_batch_on_failure
启用/禁用在失败时拆分批次。
有时,向远程分片发送某个特定批次可能会失败,这是因为后续存在复杂的管道处理 (例如带有 GROUP BY 的 MATERIALIZED VIEW) ,从而导致 Memory limit exceeded 或类似错误。在这种情况下,重试并不能解决问题 (而且还会导致该表的分布式发送卡住) ;但如果将该批次中的文件逐个发送,则可能成功执行 INSERT。
因此,将此设置设为 1 后,将对这类批次禁用批处理 (即临时对失败批次禁用 distributed_background_insert_batch) 。
可能的值:
- 1 — 启用。
- 0 — 禁用。
此设置也会影响损坏的批次 (这类批次可能是由于服务器 (机器) 异常终止,以及 Distributed 表引擎未使用
fsync_after_insert/fsync_directories 而产生的) 。不应依赖自动批次拆分,因为这可能会影响性能。
distributed_background_insert_timeout
insert_distributed_timeout
向 Distributed 表执行插入查询的超时时间。此设置仅在启用 insert_distributed_sync 时生效。值为 0 表示不设超时。