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

clickhouse-benchmark

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

Синтаксис

$ clickhouse-benchmark --query ["один запрос"] [ключи]

или

$ echo "один запрос" | clickhouse-benchmark [ключи]

или

$ clickhouse-benchmark [ключи] <<< "один запрос"

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

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

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

clickhouse-benchmark [ключи] < queries_file;

Ключи

  • --query=QUERY — Запрос для выполнения. Если этот параметр не передан, clickhouse-benchmark будет считывать запросы из стандартного ввода.
  • -c N, --concurrency=N — Количество запросов, которые clickhouse-benchmark отправляет одновременно. Значение по умолчанию: 1.
  • -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-benchmark выводит стек-трассы исключений.
  • --stage=WORD — Этап обработки запроса на сервере. ClickHouse останавливает обработку запроса и возвращает ответ clickhouse-benchmark на указанном этапе. Возможные значения: complete, fetch_columns, with_mergeable_state. Значение по умолчанию: complete.
  • --reconnect=N - Управление поведением повторного подключения. Возможные значения 0 (никогда не переподключаться), 1 (переподключаться для каждого запроса), или N (переподключаться после каждого N запросов). Значение по умолчанию: 1.
  • --help — Показать сообщение помощи.

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

Вывод

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

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

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

localhost:9000, запросы 10, QPS: 6.772, RPS: 67904487.440, MiB/s: 518.070, результат RPS: 67721584.984, результат MiB/s: 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 сек.

В отчете вы можете найти:

  • Количество запросов в поле Выполнено запросов:.

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

    • Конечная точка сервера ClickHouse.
    • Количество обработанных запросов.
    • QPS: Сколько запросов сервер выполнил в секунду за период, указанный в аргументе --delay.
    • RPS: Сколько строк сервер считывает в секунду за период, указанный в аргументе --delay.
    • MiB/s: Сколько мебибайтов сервер считывает в секунду за период, указанный в аргументе --delay.
    • результат RPS: Сколько строк помещено сервером в результат запроса в секунду за период, указанный в аргументе --delay.
    • результат 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, MiB/s: 575.614, результат RPS: 37639659.982, результат MiB/s: 287.168.
localhost:9000, запросы 3, QPS: 3.815, RPS: 76466659.385, MiB/s: 583.394, результат RPS: 38148392.297, результат MiB/s: 291.049.

0.000%          0.258 сек.      0.250 сек.
10.000%         0.258 сек.      0.250 сек.
20.000%         0.258 сек.      0.250 сек.
30.000%         0.258 сек.      0.267 сек.
40.000%         0.258 сек.      0.267 сек.
50.000%         0.273 сек.      0.267 сек.
60.000%         0.273 сек.      0.267 сек.
70.000%         0.273 сек.      0.267 сек.
80.000%         0.273 сек.      0.269 сек.
90.000%         0.273 сек.      0.269 сек.
95.000%         0.273 сек.      0.269 сек.
99.000%         0.273 сек.      0.269 сек.
99.900%         0.273 сек.      0.269 сек.
99.990%         0.273 сек.      0.269 сек.

Разница не доказана при уровне доверия 99.5%