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

В 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 ...

Нагрузочное тестирование можно разбить на 3 этапа:

  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

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

Непосредственно тестирование выполняется командой 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

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

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

Очистка

После выполнения всего необходимого тестирования данные могут быть удалены из БД.
Сделано это может быть при помощи команды 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

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