ClickBench нагрузка

Нагрузка базируется на данных и запросах из репозитория https://github.com/ClickHouse/ClickBench, а запросы и схема таблицы адаптированы под YDB.

Тест генерирует типичную рабочую нагрузку в следующих областях: анализ потока кликов и трафика, веб-аналитика, машинно-генерируемые данные, структурированные журналы и данные о событиях. Он охватывает типичные запросы в аналитике и информационных панелях реального времени.

Набор данных для бенчмарка был получен на основе фактической записи трафика одной из крупнейших в мире платформ веб-аналитики. Он анонимизирован, при этом сохраняет все основные распределения данных. Набор запросов был импровизирован, чтобы отразить реалистичные рабочие нагрузки, в то время как запросы не исходят непосредственно из производства.

Общие параметры команд

Все команды поддерживают общий параметр --path, который задает путь к таблице в базе данных:

ydb  workload clickbench --path clickbench/hits ...

Доступные параметры

Имя Описание Значение по умолчанию
--path или -p Путь к таблице clickbench/hits

Инициализация нагрузочного теста

Перед запуском теста создайте таблицу:

ydb workload clickbench --path clickbench/hits init

Посмотрите описание команды для запуска нагрузки:

ydb workload clickbench init --help

Доступные параметры

Имя Описание Значение по умолчанию
--store <значение> Тип хранилища таблиц. Возможные значения: row, column, `external-s3 row
--external-s3-prefix <значение> Актуально только для внешних таблиц. Корневой путь к набору данных в S3-хранилище
--external-s3-endpoint <значение> или -e <значение> Актуально только для внешних таблиц. Ссылка на S3-Bucket с данными
--string Использовать для текстовых полей тип String Utf8
--datetime Использовать для полей, связанных со временем типа Date, Datetime и Timestamp Date32, Datetime64 и Timestamp64.
--partition-size Максимальный размер партиции в мегабайтах (AUTO_PARTITIONING_PARTITION_SIZE_MB) для строчных таблиц. 2000
--clear Если по указанному пути таблица уже была создана, она будет удалена.
--dry-run Не выполнять инициализационные запросы, а только вывести их текст.

Загрузка данных в таблицу

Загрузите данные в таблицу. Для этого скачайте архив с данными, затем загрузите данные в таблицу:

wget https://datasets.clickhouse.com/hits_compatible/hits.csv.gz
ydb workload clickbench --path clickbench/hits import files --input hits.csv.gz

В качестве исходных файлов можно использовать как распакованные и запакованные csv и tsv файлы, так и директории с такими файлами.

Доступные параметры

Имя Описание Значение по умолчанию
--input <путь> или -i <путь> Путь к исходным файлам с данными. Поддерживаются как распакованные и запакованные csv и tsv файлы, так и директории с такими файлами. Данные могут быть загружены с официального сайта ClickBench: csv.gz, tsv.gz. Для ускорения загрузки можно разбить эти файлы на более мелкие части, в этом случае части буду загружаться параллельно.
--state <путь> Путь к файлу состояния загрузки. Если загрузка была прервана по какой-то причине, при новом запуске загрузка будет продолжена с того же места.
--clear-state Актуально, если задан параметр --state. Очистить файл состояния и начать загрузку сначала.
--dry-run Не выполнять загрузку данных в базу данных, только подготовить данные и вывести об этом сообщение.

Общие параметры команды import

Имя Описание Значение по умолчанию
--upload-threads <значение> или -t <значение> Количество потоков исполнения для подготовки данных. Рассчитывает автоматически и равно числу доступных ядер на клиентской машине.
--bulk-size <значение> Размер порции для отправки данных в строках. 10000
--max-in-flight <значение> Максимальное количество порций данных, одновременно находящихся в обработке. 128
--file-output-path <значение> или -f <путь> Если эта опция установлена, данные не будут загружены в базу данных, а будут сохранены в каталоге <путь>.

Запуск нагрузочного теста

Запустите нагрузку:

ydb workload clickbench  --path clickbench/hits run

В течение теста на экран выводится статистика по нагрузке для каждого запроса.

Посмотрите описание команды для запуска нагрузки:

ydb workload clickbench run --help

Общие параметры для всех видов нагрузки

Имя Описание Значение по умолчанию
--dry-run Не выполнять инициализационные запросы, а только вывести их текст.
--check-canonical или -c Использовать специальную версию запросов (они имеют детерминированные ответы) и сверять результаты с каноническими.
--output <значение> Имя файла, в котором будут сохранены результаты выполнения запросов. results.out
--iterations <значение> Количество выполнений каждого из запросов нагрузки. 1
--json <имя> Имя файла, в котором будет сохранена статистика выполнения запросов в формате json. Файл не сохраняется
--ministat <имя> Имя файла, в котором будет сохранена статистика выполнения запросов в формате ministat. Файл не сохраняется
--csv <имя> Имя файла для сохранения CSV-версии таблицы с результатами. Файл не сохраняется
--plan <имя> Имя файла для сохранения плана запроса. Если задано, то сохраняются файлы <имя>.<номер запроса>.explain и <имя>.<номер запроса>.<номер итерации> с планами в нескольких форматах: ast, json, svg и table. Планы не сохраняется.
--query-prefix <префикс> Префикс запроса. Каждый префикс будет добавлен отдельной строкой в начало каждого запроса. Если нужно указать несколько префиксов, используйте параметр несколько раз. По умолчанию не задан
--retries Количество повторных попыток выполнения каждого запроса 0
--include Имена, номера или диапазоны номеров запросов, которые нужно выполнить в рамках нагрузки. Указываются через запятую, например: 1,2,4-6. Все запросы
--exclude Имена, номера или диапазоны номеров запросов, которые нужно исключить из нагрузки. Указываются через запятую, например: 1,2,4-6.
--verbose или -v Выводить больше информации на экран в процессе выполнения запросов.
--global-timeout <значение> Общий таймаут на выполнение всех запросов. Задаётся в текстовом формате, например: 0.5s, 1m, 100us и т.д. Отсутствует. Время не ограничино.
--request-timeout <значение> Таймаут на выполнение каждой итерации каждого запроса. Задаётся в текстовом формате, например: 0.5s, 1m, 100us и т.д. Отсутствует. Время не ограничино.
--threads <значение> или -t <значение> Количество потоков, генерирующих нагрузку. Ноль означает, что запросы будут выполняться в основном потоке; при ином значении запросы будут перемешаны. 0

Опции, специфичные для ClickBench

Имя Описание Значение по умолчанию
--syntax <значение> Какой вариант синтаксиса запросов использовать, yql или pg (сокращение от PostgreSQL). Про работу с синтаксисом YQL можно прочитать в здесь, а про PostgreSQL здесь. yql

Очистка данных теста

Запустите очистку:

ydb workload clickbench --path clickbench/hits clean

Команда не имеет параметров.

Предыдущая
Следующая