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 . |
--clear |
Если по указанному пути таблица уже была создана, она будет удалена |
Загрузка данных в таблицу
Загрузите данные в таблицу. Для этого скачайте архив с данными, затем загрузите данные в таблицу:
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 . Очистить файл состояния и начать загрузку сначала. |
Общие параметры команды import
Имя | Описание | Значение по умолчанию |
---|---|---|
--upload-threads <значение> или -t <значение> |
Количество потоков исполнения для подготовки данных. | Cоответствует количеству доступных ядер на клиентской машине. |
--bulk-size <значение> |
Размер порции для отправки данных в строках. | 10000 |
--max-in-flight <значение> |
Максимально количество порций данных, одновременно находящихся в обработке. | 128 |
Запуск нагрузочного теста
Запустите нагрузку:
ydb workload clickbench --path clickbench/hits run
В течение теста на экран выводится статистика по нагрузке для каждого запроса.
Посмотрите описание команды для запуска нагрузки:
ydb workload clickbench run --help
Общие параметры для всех видов нагрузки
Имя | Описание | Значение по умолчанию |
---|---|---|
--output <значение> |
Имя файла, в котором будут сохранены результаты выполнения запросов. | results.out |
--iterations <значение> |
Количество выполнений каждого из запросов нагрузки. | 1 |
--json <имя> |
Имя файла, в котором будет сохранена статистика выполнения запросов в формате json . |
Файл не сохраняется |
--ministat <имя> |
Имя файла, в котором будет сохранена статистика выполнения запросов в формате ministat . |
Файл не сохраняется |
--plan <имя> |
Имя файла для сохранения плана запроса. Если задано, то сохраняются файлы <имя>.<номер запроса>.explain и <имя>.<номер запроса>.<номер итерации> с планами в нескольких форматах: ast , json , svg и table . |
Планы не сохраняется. |
--query-settings <настройка> |
Настройки выполнения запроса. Каждая настройка будет добавлена отдельной строчкой в начале каждого запроса. Если нужно указать несколько настроек, используйте параметр несколько раз. | |
--include |
Номера или отрезки номеров запросов, которые нужно выполнить в рамках нагрузки. Указываются через запятую, например 1,2,4-6 . |
Все запросы |
--exclude |
Номера или отрезки номеров запросов, которые нужно исключить в рамках нагрузки. Указываются через запятую, например 1,2,4-6 . |
|
--executer |
Механизм выполнения запросов, доступные значения: scan , generic . |
generic |
--verbose или -v |
Выводить больше информации на экран в процессе выполнения запросов. |
Опции, специфичные для ClickBench
Имя | Описание | Значение по умолчанию |
---|---|---|
--ext-queries <запросы> или -q <запросы> |
Внешние запросы для выполнения нагрузки, разделенные точкой с запятой. | |
--ext-queries-file <имя> |
Имя файла, в котором можно указать внешние запросы для выполнения нагрузки, разделенные точкой с запятой. | |
--ext-query-dir <имя> |
Директория с внешними запросами для выполнения нагрузки. Запросы должны лежать в файлах с именами q[0-42].sql . |
|
--ext-results-dir <имя> |
Директория с внешними результатами запросов для сравнения. Результаты должны лежать в файлах с именами q[0-42].sql . |
|
--check-canonical или -c |
Использовать специальные детерминированные внутренние запросы и сверять результаты с каноническими. |
Очистка данных теста
Запустите очистку:
ydb workload clickbench --path clickbench/hits clean
Команда не имеет параметров.