Skip to main content
이 설정은 ClickHouse 서버를 구성하는 데 사용되며 ClickHouse 소스에서 자동 생성됩니다.

concurrent_threads_lazy_allocation

CPU 슬롯이 쿼리에 어떻게 할당되는지 제어합니다. true(기본값)이면 쿼리는 1개의 CPU 슬롯으로 시작하며, 파이프라인이 실제로 더 많은 병렬 처리 가능한 작업을 생성할 때만 스케줄러에 추가 슬롯을 요청합니다. 이렇게 하면 쿼리가 max_threads 슬롯까지 예약해 두고도 실제로는 그중 일부만 사용해, 동시에 실행되는 다른 쿼리가 자원을 할당받지 못하는 상황을 방지할 수 있습니다. 이 설정은 동시성 제어와 워크로드용 선점형 CPU 스케줄러 모두에 적용됩니다. false이면 쿼리는 시작할 때 max_threads 슬롯 전체를 한 번에 요청합니다.

concurrent_threads_scheduler

concurrent_threads_soft_limit_num 및 concurrent_threads_soft_limit_ratio_to_cores로 지정된 CPU 슬롯의 스케줄링 방식을 정의하는 정책입니다. 제한된 수의 CPU 슬롯을 동시 실행되는 쿼리 간에 어떻게 분배할지 제어하는 알고리즘입니다. 스케줄러는 서버를 재시작하지 않고도 런타임에 변경할 수 있습니다. 가능한 값:
  • round_robin — use_concurrency_control = 1로 설정된 모든 쿼리는 최대 max_threads개의 CPU 슬롯을 할당합니다. 각 스레드당 1개의 슬롯이 할당됩니다. 경합이 발생하면 CPU 슬롯은 라운드 로빈 방식으로 쿼리에 부여됩니다. 첫 번째 슬롯은 조건 없이 부여되므로, max_threads = 1인 쿼리가 많은 경우 max_threads가 큰 쿼리의 공정성이 떨어지고 지연 시간이 증가할 수 있습니다.
  • fair_round_robin — use_concurrency_control = 1로 설정된 모든 쿼리는 최대 max_threads - 1개의 CPU 슬롯을 할당합니다. 모든 쿼리의 첫 번째 스레드에는 CPU 슬롯이 필요하지 않도록 한 round_robin의 변형입니다. 이렇게 하면 max_threads = 1인 쿼리는 슬롯이 전혀 필요하지 않으므로 모든 슬롯을 불공정하게 차지할 수 없습니다. 조건 없이 부여되는 슬롯은 없습니다.
  • max_min_fair — use_concurrency_control = 1로 설정된 모든 쿼리는 최대 max_threads - 1개의 CPU 슬롯을 할당합니다. fair_round_robin과 비슷하지만, 반환된 슬롯은 현재 할당된 슬롯 수가 가장 적은 쿼리에 항상 부여됩니다. 따라서 많은 쿼리가 제한된 CPU 슬롯을 두고 경쟁하는 높은 과구독 상태에서 더 나은 공정성을 제공합니다. 짧게 실행되는 쿼리는 시간이 지나면서 더 많은 슬롯을 누적한 오래 실행되는 쿼리 때문에 불이익을 받지 않습니다.

concurrent_threads_soft_limit_num

원격 서버에서 데이터를 가져오는 스레드를 제외하고, 모든 쿼리 실행에 사용할 수 있는 쿼리 처리 스레드의 최대 개수입니다. 이는 하드 제한이 아닙니다. 이 한도에 도달하더라도 각 쿼리에는 계속 실행할 수 있도록 최소 1개의 스레드가 할당됩니다. 이후 사용 가능한 스레드가 더 생기면, 쿼리는 실행 중에 원하는 개수의 스레드까지 확장될 수 있습니다.
0 값(기본값)은 제한이 없음을 의미합니다.

concurrent_threads_soft_limit_ratio_to_cores

concurrent_threads_soft_limit_num와 동일하지만, 코어 수 대비 비율을 사용합니다.
마지막 수정일 2026년 7월 23일