메인 콘텐츠로 건너뛰기
프로파일 기반 최적화(Profile-Guided Optimization, PGO)는 프로그램의 런타임 프로파일을 바탕으로 최적화하는 컴파일러 최적화 기법입니다. 테스트에 따르면 PGO는 ClickHouse의 성능 향상에 도움이 됩니다. 테스트 결과 ClickBench 테스트 스위트에서 QPS가 최대 15%까지 향상되는 것으로 확인되었습니다. 더 자세한 결과는 여기에서 확인할 수 있습니다. 성능 향상 폭은 일반적인 워크로드에 따라 달라지므로, 더 좋은 결과가 나올 수도 있고 그렇지 않을 수도 있습니다. ClickHouse의 PGO에 대한 자세한 내용은 관련 GitHub issue에서 확인할 수 있습니다.

PGO로 ClickHouse를 빌드하는 방법

PGO에는 크게 두 가지 방식이 있습니다. Instrumentation샘플링(AutoFDO라고도 함)입니다. 이 가이드에서는 ClickHouse에서 Instrumentation PGO를 사용하는 방법을 설명합니다.
  1. ClickHouse를 Instrumented 모드로 빌드합니다. Clang에서는 CXXFLAGS-fprofile-generate 옵션을 전달하면 됩니다.
  2. 샘플 워크로드로 instrumented ClickHouse를 실행합니다. 여기서는 평소 사용하는 워크로드를 사용해야 합니다. 한 가지 방법으로 ClickBench를 샘플 워크로드로 사용할 수 있습니다. Instrumentation 모드의 ClickHouse는 느리게 동작할 수 있으므로 이를 감안해야 하며, 성능이 중요한 환경에서는 instrumented ClickHouse를 실행하지 마십시오.
  3. 이전 단계에서 수집한 프로파일과 -fprofile-use 컴파일러 플래그를 사용하여 ClickHouse를 다시 컴파일합니다.
PGO 적용 방법에 대한 더 자세한 안내는 Clang documentation에서 확인할 수 있습니다. 운영 환경에서 직접 샘플 워크로드를 수집할 계획이라면 샘플링 PGO 사용을 권장합니다.
마지막 수정일 2026년 6월 10일