clickhouse-benchmark
clickhouse-benchmark
clickhouse-benchmark는 ClickHouse 서버에 연결해 지정한 쿼리를 반복해서 전송하는 도구예요. 서버 성능을 측정하고 여러 서버의 성능을 비교하는 데 사용할 수 있습니다.
출처: 문서
본문
ClickHouse 서버에 연결해 지정한 쿼리를 반복해서 전송합니다.
구문
$ clickhouse-benchmark --query ["single query"] [keys]
또는
$ echo "single query" | clickhouse-benchmark [keys]
또는
$ clickhouse-benchmark [keys] <<< "single query"
쿼리 세트를 보내려면 텍스트 파일을 만들고 각 쿼리를 이 파일의 개별 문자열에 배치하세요. 예를 들어:
SELECT * FROM system.numbers LIMIT 10000000;
SELECT 1;
그런 다음 이 파일을 clickhouse-benchmark의 표준 입력으로 전달합니다:
clickhouse-benchmark [keys] < queries_file;
명령줄 옵션 (Command-line options)
--query=QUERY— 실행할 쿼리. 이 파라미터를 전달하지 않으면clickhouse-benchmark는 표준 입력에서 쿼리를 읽습니다.--query_id=ID— 쿼리 ID.--query_id_prefix=ID_PREFIX— 쿼리 ID 접두사.--queries-format=FORMAT— 표준 입력에서 읽은 쿼리의 형식. 가능한 값:tsv(기본값, 한 줄에 하나의 탭-이스케이프된 쿼리)와script(입력을 세미콜론으로 구분된 여러 쿼리의 스크립트로 파싱).script의 제한:INSERT ... FORMAT쿼리는 한 줄에 있어야 합니다.-c N,--concurrency=N—clickhouse-benchmark가 동시에 보내는 쿼리 수. 기본값: 1.-C N,--max_concurrency=N— 병렬 쿼리 수를 지정된 값까지 점진적으로 늘리며, 각 동시성 수준마다 보고서를 하나 만듭니다.--precise— 가중 메트릭으로 정밀한 구간별 보고를 활성화합니다.-d N,--delay=N— 중간 보고서 사이의 간격(초)(보고서를 비활성화하려면 0 설정). 기본값: 1.-h HOST,--host=HOST— 서버 호스트. 기본값:localhost. 비교 모드에서는 여러-h키를 사용할 수 있습니다.-i N,--iterations=N— 총 쿼리 수. 기본값: 0 (무한 반복).-r,--randomize— 입력 쿼리가 둘 이상인 경우 쿼리 실행 순서를 무작위로 합니다.-s,--secure—TLS연결을 사용합니다.-t N,--timelimit=N— 시간 제한(초). 지정된 시간 제한에 도달하면clickhouse-benchmark는 쿼리 전송을 중단합니다. 기본값: 0 (시간 제한 비활성화).--port=N— 서버 포트. 기본값: 9000. 비교 모드에서는 여러--port키를 사용할 수 있습니다.--confidence=N— T-검정에 대한 신뢰 수준. 가능한 값: 0 (80%), 1 (90%), 2 (95%), 3 (98%), 4 (99%), 5 (99.5%). 기본값: 5. 비교 모드에서clickhouse-benchmark는 두 분포가 선택된 신뢰 수준에서 다르지 않은지 판단하기 위해 독립 2표본 Student's t-test를 수행합니다.--cumulative— 구간별 데이터 대신 누적 데이터를 출력합니다.--database=DATABASE_NAME— ClickHouse 데이터베이스 이름. 기본값:default.--user=USERNAME— ClickHouse 사용자 이름. 기본값:default.--password=PSWD— ClickHouse 사용자 비밀번호. 기본값: 빈 문자열.--stacktrace— 스택 트레이스 출력. 키가 설정되면clickhouse-benchmark는 예외의 스택 트레이스를 출력합니다.--stage=WORD— 서버에서의 쿼리 처리 단계. ClickHouse는 지정된 단계에서 쿼리 처리를 중단하고clickhouse-benchmark에 답을 반환합니다. 가능한 값:complete,fetch_columns,with_mergeable_state. 기본값:complete.--roundrobin— 서로 다른--host/--port에 대해 쿼리를 비교하는 대신 매 쿼리마다 하나의 랜덤--host/--port를 골라 보고합니다.--reconnect=N— 재연결 동작을 제어합니다. 가능한 값 0(다시 연결 안 함), 1(매 쿼리마다 재연결), 또는 N(N 쿼리마다 재연결). 기본값: 0.--max-consecutive-errors=N— 허용되는 연속 오류 수. 기본값: 0.--ignore-error,--continue_on_errors— 쿼리가 실패해도 테스트를 계속합니다.--client-side-time— 서버 측 시간 대신 네트워크 통신을 포함한 시간을 표시합니다; 22.8 이전 서버 버전에서는 항상 클라이언트 측 시간을 표시합니다.--proto-caps— 데이터 전송에서 청킹(chunking) 활성화/비활성화. 선택(쉼표로 구분 가능):chunked_optional,notchunked,notchunked_optional,send_chunked,send_chunked_optional,send_notchunked,send_notchunked_optional,recv_chunked,recv_chunked_optional,recv_notchunked,recv_notchunked_optional. 기본값:notchunked.--help— 도움말 메시지를 표시합니다.--verbose— 도움말 메시지의 상세도를 높입니다.
쿼리에 일부 설정을 적용하려면 --<세션 설정 이름>= SETTING_VALUE 키로 전달하세요. 예를 들어, --max_memory_usage=1048576.
환경 변수 옵션 (Environment variable options)
사용자 이름, 비밀번호, 호스트는 환경 변수 CLICKHOUSE_USER, CLICKHOUSE_PASSWORD, CLICKHOUSE_HOST로 설정할 수 있습니다.
명령줄 인자 --user, --password, --host가 환경 변수보다 우선합니다.
출력 (Output)
기본적으로 clickhouse-benchmark는 각 --delay 간격마다 보고합니다.
보고서 예시:
Queries executed: 10.
localhost:9000, queries 10, QPS: 6.772, RPS: 67904487.440, MiB/s: 518.070, result RPS: 67721584.984, result MiB/s: 516.675.
0.000% 0.145 sec.
10.000% 0.146 sec.
20.000% 0.146 sec.
30.000% 0.146 sec.
40.000% 0.147 sec.
50.000% 0.148 sec.
60.000% 0.148 sec.
70.000% 0.148 sec.
80.000% 0.149 sec.
90.000% 0.150 sec.
95.000% 0.150 sec.
99.000% 0.150 sec.
99.900% 0.150 sec.
99.990% 0.150 sec.
보고서에서 찾을 수 있는 것:
Queries executed:필드의 쿼리 수.- 상태 문자열(순서대로 포함):
- ClickHouse 서버의 엔드포인트.
- 처리된 쿼리 수.
- QPS:
--delay인자에 지정된 기간 동안 서버가 초당 수행한 쿼리 수. - RPS:
--delay인자에 지정된 기간 동안 서버가 초당 읽은 행 수. - MiB/s:
--delay인자에 지정된 기간 동안 서버가 초당 읽은 메비바이트 수. - result RPS:
--delay인자에 지정된 기간 동안 서버가 쿼리 결과에 배치한 행 수(초당). - result MiB/s:
--delay인자에 지정된 기간 동안 서버가 쿼리 결과에 배치한 메비바이트 수(초당).
- 쿼리 실행 시간의 백분위수.
비교 모드 (Comparison Mode)
clickhouse-benchmark는 두 개의 실행 중인 ClickHouse 서버의 성능을 비교할 수 있습니다.
비교 모드를 사용하려면 두 쌍의 --host, --port 키로 두 서버의 엔드포인트를 지정하세요. 키는 인자 목록의 위치로 서로 매칭됩니다. 첫 번째 --host는 첫 번째 --port와 매칭되는 방식입니다. clickhouse-benchmark는 두 서버에 연결을 수립한 후 쿼리를 보냅니다. 각 쿼리는 무작위로 선택된 서버로 전송됩니다. 결과는 테이블로 표시됩니다.
예시 (Example)
$ echo "SELECT * FROM system.numbers LIMIT 10000000 OFFSET 10000000" | clickhouse-benchmark --host=localhost --port=9001 --host=localhost --port=9000 -i 10
Loaded 1 queries.
Queries executed: 5.
localhost:9001, queries 2, QPS: 3.764, RPS: 75446929.370, MiB/s: 575.614, result RPS: 37639659.982, result MiB/s: 287.168.
localhost:9000, queries 3, QPS: 3.815, RPS: 76466659.385, MiB/s: 583.394, result RPS: 38148392.297, result MiB/s: 291.049.
0.000% 0.258 sec. 0.250 sec.
10.000% 0.258 sec. 0.250 sec.
20.000% 0.258 sec. 0.250 sec.
30.000% 0.258 sec. 0.267 sec.
40.000% 0.258 sec. 0.267 sec.
50.000% 0.273 sec. 0.267 sec.
60.000% 0.273 sec. 0.267 sec.
70.000% 0.273 sec. 0.267 sec.
80.000% 0.273 sec. 0.269 sec.
90.000% 0.273 sec. 0.269 sec.
95.000% 0.273 sec. 0.269 sec.
99.000% 0.273 sec. 0.269 sec.
99.900% 0.273 sec. 0.269 sec.
99.990% 0.273 sec. 0.269 sec.
No difference proven at 99.5% confidence