Проведение нагрузочного тестирования

В YDB интегрирован инструментарий для проведения нагрузочных тестов с использованием стандартных бенчмарков:

Бенчмарк Справка
TPC-C tpcc
TPC-H tpch
TPC-DS tpcds
ClickBench clickbench

Помимо стандартных бенчмарков есть еще несколько внутренних:

Бенчмарк Справка
Key Value kv
Stock stock
Topic topic
Transfer topic

Также предусмотрена возможность запуска пользовательских сценариев тестирования, которые инициируются посредством команды ydb workload query, см. описание. Подробности приведены в соответствующем разделе.

Все указанные методы эмулируют пользовательскую нагрузку на базу данных в рамках заданных сценариев. Детальное описание каждого метода представлено в соответствующих разделах, ссылки на которые приведены выше.

Все команды для работы с бенчмарками сгруппированы в соответствующие категории:

ydb workload tpcc --path path/in/database ...
ydb workload clickbench --path path/in/database ...
ydb workload tpch --path path/in/database ...
ydb workload tpcds --path path/in/database ...
ydb workload query --path path/in/database ...
ydb workload kv --path path/in/database ...
ydb workload stock --path path/in/database ...
ydb workload topic ...
ydb workload transfer ...

Нагрузочное тестирование состоит из трёх этапов:

  1. Подготовка данных
  2. Тестирование
  3. Очистка

Подготовка данных

Состоит из двух этапов, это инициализация таблиц и наполнение их данными.

Инициализация

Инициализация производится командой init:

ydb workload tpcc --path tpcc/10wh init
ydb workload clickbench --path clickbench/hits init --store=row
ydb workload tpch --path tpch/s1 init --store=column
ydb workload tpcds --path tpcds/s1 init --store=external-s3
ydb workload query --path user/suite1 init --suite-path /home/user/user_suite
ydb workload kv --path kv init --store=column
ydb workload stock --path stock init --store=row
ydb workload topic init --topic some_topic
ydb workload transfer topic-to-table init --topic some_topic --table /db/table

На этапе создания таблиц, если вы запускаете tpch, tpcds или clickbench, возможно дополнительно настроить создаваемые таблицы:

  • Выбрать тип используемых таблиц: строковые, колоночные, внешние и тд. (параметр --store);
  • Выбрать типы используемых колонок: строк (параметр --string), дат и времени (--datetime) и тип вещественных чисел (--float-mode).

Также можно указать, что перед созданием таблицы должны быть удалены, если они уже созданы (параметр --clear).

Подробнее см. описание команд для каждого бенчмарка:

Наполнение данными

Наполнение созданных таблиц данными выполняется с помощью команды import. Эта команда специфична для каждого бенчмарка, и её поведение зависит от дополнительных опций.

Подробное описание см. в соответствующих разделах:

Примеры:

ydb workload tpcc --path tpcc/10wh import
ydb workload clickbench --path clickbench/hits import files --input hits.csv.gz
ydb workload tpch --path tpch/s1 import generator --scale 1
ydb workload tpcds --path tpcds/s1 import generator --scale 1
ydb workload query --path user/suite1 import --suite-path /home/user/user_suite

Тестирование

Непосредственный запуск нагрузочного тестирования выполняется командой run. Её поведение практически одинаково для разных бенчмарков, хотя некоторые различия всё-таки присутствуют.

Примеры:

ydb workload tpcc --path tpcc/10wh run
ydb workload clickbench --path clickbench/hits run --include 1-5,8
ydb workload tpch --path tpch/s1 run --exсlude 3,4 --iterations 3
ydb workload tpcds --path tpcds/s1 run --plan ~/query_plan --include 2 --iterations 5
ydb workload query --path user/suite1 run --plan ~/query_plan --include first_query_set.1.sql,second_query_set.2.sql --iterations 5
ydb workload kv --path kv run mixed
ydb workload stock --path stock run add-rand-order
ydb workload topic run full --topic some_topic
ydb workload transfer topic-to-table run --topic some_topic --table /db/table

Команда run для каждого из бенчмарков имеет ряд дополнительных параметров для настройки видов генерируемых отчётов, сбора статистики и прочих результатов нагрузочного тестирования.

Подробное описание см. в соответствующих разделах:

Очистка

При завершении работ по нагрузочному тестированию тестовые данные и таблицы можно удалить командой clean:

ydb workload tpcc --path tpcc/10wh clean
ydb workload clickbench --path clickbench/hits clean
ydb workload tpch --path tpch/s1 clean
ydb workload tpcds --path tpcds/s1 clean
ydb workload query --path user/suite1 clean
ydb workload kv --path kv clean
ydb workload stock --path stock clean
ydb workload topic clean --topic some_topic
ydb workload transfer topic-to-table clean --topic some_topic --table /db/table

Подробное описание см. в соответствующих разделах: