Перейти к основному содержанию
Перейти к основному содержанию

clickhouse-benchmark

Подключается к серверу ClickHouse и многократно отправляет заданные запросы.

Синтаксис

$ clickhouse-benchmark --query ["single query"] [keys]

или

$ echo "единичный запрос" | clickhouse-benchmark [keys]

или

$ clickhouse-benchmark [keys] <<< "single query"

Если вы хотите отправить набор запросов, создайте текстовый файл и поместите каждый запрос на отдельной строке в этом файле. Например:

SELECT * FROM system.numbers LIMIT 10000000;
SELECT 1;

Затем передайте этот файл в стандартный ввод программы clickhouse-benchmark:

clickhouse-benchmark [keys] < queries_file;

Параметры командной строки

  • --query=QUERY — Запрос для выполнения. Если этот параметр не передан, clickhouse-benchmark будет читать запросы из стандартного ввода.
  • --query_id=ID — ID запроса.
  • --query_id_prefix=ID_PREFIX — Префикс ID запроса.
  • -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 выполняет t-тест Стьюдента для двух независимых выборок, чтобы определить, не различаются ли две выборки при выбранном уровне доверия.
  • --cumulative — Вывод накопленных данных вместо данных по интервалам.
  • --database=DATABASE_NAME — Имя базы данных ClickHouse. Значение по умолчанию: default.
  • --user=USERNAME — Имя пользователя ClickHouse. Значение по умолчанию: default.
  • --password=PSWD — Пароль пользователя ClickHouse. Значение по умолчанию: пустая строка.
  • --stacktrace — Вывод трассировок стека. При указании этого параметра clickhouse-bencmark выводит трассировки стека для исключений.
  • --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 — Включить/отключить чанкинг при передаче данных. Возможные варианты (могут быть разделены запятыми): 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 — Увеличивает детализацию справочного сообщения.

Если вы хотите применить некоторые настройки к запросам, передайте их в виде параметров --<session setting name>= SETTING_VALUE. Например, --max_memory_usage=1048576.

Параметры переменных окружения

Имя пользователя, пароль и хост могут быть заданы с помощью переменных окружения CLICKHOUSE_USER, CLICKHOUSE_PASSWORD и CLICKHOUSE_HOST.
Аргументы командной строки --user, --password или --host имеют приоритет над переменными окружения.

Вывод

По умолчанию clickhouse-benchmark выводит отчет по каждому интервалу --delay.

Пример отчета:

Queries executed: 10.

localhost:9000, запросов 10, QPS: 6.772, RPS: 67904487.440, MiB/с: 518.070, результат RPS: 67721584.984, результат MiB/с: 516.675.

0.000%      0.145 сек.
10.000%     0.146 сек.
20.000%     0.146 сек.
30.000%     0.146 сек.
40.000%     0.147 сек.
50.000%     0.148 сек.
60.000%     0.148 сек.
70.000%     0.148 сек.
80.000%     0.149 сек.
90.000%     0.150 сек.
95.000%     0.150 сек.
99.000%     0.150 сек.
99.900%     0.150 сек.
99.990%     0.150 сек.

В отчёте вы найдёте:

  • Количество запросов в поле Queries executed:.

  • Строку состояния, содержащую (в указанном порядке):

    • конечную точку сервера ClickHouse;
    • количество обработанных запросов;
    • QPS: сколько запросов сервер выполнил в секунду в течение периода, указанного в аргументе --delay;
    • RPS: сколько строк сервер прочитал в секунду в течение периода, указанного в аргументе --delay;
    • MiB/s: сколько мебибайт сервер прочитал в секунду в течение периода, указанного в аргументе --delay;
    • result RPS: сколько строк сервер поместил в результат запроса в секунду в течение периода, указанного в аргументе --delay;
    • result MiB/s: сколько мебибайт сервер поместил в результат запроса в секунду в течение периода, указанного в аргументе --delay.
  • Перцентили времени выполнения запросов.

Режим сравнения

clickhouse-benchmark может сравнивать производительность двух запущенных серверов ClickHouse.

Чтобы использовать режим сравнения, укажите конечные точки обоих серверов двумя парами ключей --host, --port. Ключи сопоставляются по позициям в списке аргументов: первый --host — с первым --port и так далее. clickhouse-benchmark устанавливает подключения к обоим серверам, затем отправляет запросы. Каждый запрос отправляется на случайно выбранный сервер. Результаты отображаются в таблице.

Пример

$ echo "SELECT * FROM system.numbers LIMIT 10000000 OFFSET 10000000" | clickhouse-benchmark --host=localhost --port=9001 --host=localhost --port=9000 -i 10
Загружен 1 запрос.

Выполнено запросов: 5.

localhost:9001, запросов 2, QPS: 3.764, RPS: 75446929.370, МиБ/с: 575.614, result RPS: 37639659.982, result МиБ/с: 287.168.
localhost:9000, запросов 3, QPS: 3.815, RPS: 76466659.385, МиБ/с: 583.394, result RPS: 38148392.297, result МиБ/с: 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.

Различия не выявлены при уровне достоверности 99,5%