Skip to main content
这些设置用于配置 ClickHouse server,且由 ClickHouse 源代码自动生成。

cpu_slot_preemption

定义 CPU 资源 (MASTER THREAD 和 WORKER THREAD) 的工作负载调度方式。
  • 如果为 true (默认值) ,则按实际消耗的 CPU 时间进行核算。系统会在相互竞争的 workload 之间公平分配 CPU 时间。CPU 插槽仅分配一段有限时间,到期后需要重新申请。在 CPU 资源过载时,申请插槽可能会阻塞线程执行,即可能发生抢占。这可确保 CPU 时间分配的公平性。
  • 如果为 false,则按已分配的 CPU 插槽数量进行核算。系统会在相互竞争的 workload 之间公平分配 CPU 插槽。线程启动时会分配一个插槽,并在整个执行期间持续持有,直到线程结束时才释放。用于查询执行的线程数只能从 1 增加到 max_threads,不会减少。这种方式更有利于长时间运行的查询,但可能导致短查询出现 CPU 饥饿。
示例
另请参阅

cpu_slot_preemption_timeout_ms

它定义了工作线程在发生抢占时最多可等待多少毫秒,也就是等待分配另一个 CPU 插槽 的时间。超过该超时时间后,如果线程仍无法获取新的 CPU 插槽,就会退出,查询也会动态缩减为更少的并发执行线程数。请注意,master thread 永远不会被缩减,但可能会被无限期抢占。只有在启用 cpu_slot_preemption 且为 WORKER THREAD 定义了 CPU resource 时,此设置才有意义。 示例
另请参阅

cpu_slot_quantum_ns

它定义了线程在获得一个 CPU 插槽 后、请求下一个 CPU 插槽 前,最多可以消耗多少 CPU 纳秒。只有在启用 cpu_slot_preemption,且为 MASTER THREAD 或 WORKER THREAD 定义了 CPU 资源时,此设置才有意义。 示例
另请参见
最后修改于 2026年7月23日