TPC-C нагрузка
Нагрузка базируется на официальной спецификации TPC-C. Все запросы и схемы таблиц адаптированы под YDB.
TPC-C — это промышленный стандарт для оценки производительности систем обработки транзакций в реальном времени (OLTP). Он моделирует работу розничной компании с настраиваемым числом складов. Каждый склад включает 10 районов, в каждом районе — 3000 клиентов. На складах хранятся товары, клиенты размещают заказы с несколькими позициями. Компания отслеживает платежи, доставку, историю заказов и периодически проводит инвентаризацию.
В результате создаётся нагрузка из распределённых транзакций различных типов и сложности, выполняемых параллельно.
В TPC-C склад является основной единицей масштабирования: чем больше складов задано, тем больше объём данных и интенсивнее поток транзакций. Каждый склад содержит примерно 100 МБ данных. Максимальное число складов, которое способен обработать кластер YDB, зависит от аппаратных ресурсов, конфигурации и сетевых задержек между узлами. В качестве практического ориентира можно использовать соотношение — около 50 складов на одно вычислительное ядро CPU.
Пример использования TPC-C:
ydb workload tpcc --path tpcc/10wh init -w 10
ydb workload tpcc --path tpcc/10wh import -w 10
ydb workload tpcc --path tpcc/10wh run -w 10
По умолчанию, если команды import
и run
запускаются в интерактивном терминале, они отображают прогресс выполнения с помощью текстового пользовательского интерфейса (TUI).
Общие параметры команд
Все команды поддерживают общий параметр --path
, задающий путь к каталогу в базе данных с таблицами бенчмарка:
ydb workload tpcc --path tpcc/10wh ...
Доступные параметры
Имя | Описание | Значение по умолчанию |
---|---|---|
--path или -p |
Путь к каталогу с таблицами бенчмарка в базе данных. | / |
Инициализация нагрузочного теста
Перед запуском бенчмарка создайте таблицы:
ydb workload tpcc --path tpcc/10wh init --warehouses 10
Подробнее о параметрах команды:
ydb workload tpcc init --help
Доступные параметры
Имя | Описание | Значение по умолчанию |
---|---|---|
--warehouses или -w |
Количество складов TPC-C. | 10 |
Загрузка данных в таблицу
Данные будут сгенерированы и загружены в таблицы непосредственно ydb:
ydb workload tpcc --path tpcc/10wh import --warehouses 10
Пример использования:
Подробнее о параметрах команды:
ydb workload tpcc import --help
Доступные параметры
Имя | Описание | Значение по умолчанию |
---|---|---|
--warehouses или -w |
Количество складов TPC-C. | 10 |
--threads |
Количество потоков для загрузки данных TPC-C в базу данных. | auto |
--no-tui |
Отключить TUI (по умолчанию включен при интерактивном запуске). |
Оптимальное количество потоков загрузки зависит от размера и конфигурации кластера YDB. В качестве ориентира: для кластеров с несколькими сотнями ядер CPU разумно начать примерно с 50 потоков загрузки. При необходимости это число можно увеличить.
Однако на клиентской стороне рекомендуется ограничивать число потоков загрузки 50–75% от общего количества доступных ядер процессора.
Запуск нагрузочного теста
Запустите нагрузку:
ydb workload tpcc --path tpcc/10wh run --warehouses 10
Во время теста TUI отображает предварительные результаты и статистику нагрузки на стороне клиента:
Подробнее о параметрах команды:
ydb workload tpcc run --help
Доступные параметры
Имя | Описание | Значение по умолчанию |
---|---|---|
--warehouses или -w |
Количество складов TPC-C. | 10 |
--warmup |
Время прогрева. Например: 10s, 5m, 1h. | auto |
--time или -t |
Время выполнения. Например: 10s, 5m, 1h. | 2h |
--max-sessions или -m |
Мягкое ограничение на количество сессий БД. | auto |
--threads |
Количество потоков, выполняющих запросы. | auto |
--format или -f |
Формат вывода: 'Pretty', 'Json'. | Pretty |
--no-tui |
Отключить TUI (по умолчанию включен при интерактивном запуске). |
Оптимальное количество сессий зависит от размера и конфигурации кластера YDB. В качестве ориентира: умножьте общее количество ядер CPU, выделенных для вычислительных узлов YDB (dynnodes), на 5–10.
Мы рекомендуем начинать с коэффициента 5. Если во время выполнения бенчмарка ресурсы YDB используются недостаточно, можно увеличить число сессий.
Результаты
Результаты теста включают tpmC, эффективность и задержки по типам транзакций. Согласно спецификации:
«Показателем производительности TPC-C является “деловая пропускная способность”, измеряемая количеством новых заказов, обработанных в минуту. Каждая единица нагрузки состоит из нескольких транзакций, имитирующих деловую активность, каждая из которых должна укладываться в определённое время отклика. Показатель измеряется в “транзакциях в минуту-C” (tpmC)».
Спецификация ограничивает теоретическую максимальную производительность одним складом: 12.86 tpmC. Чтобы увеличить общую нагрузку и итоговый tpmC, масштабируйте количество складов.
Формула расчёта эффективности:
Очистка данных теста
Удаление таблиц бенчмарка:
ydb workload tpcc --path tpcc/10wh clean
Команда не имеет параметров.
Проверка целостности данных
Команда check
проверяет консистентность данных TPC-C после команды import
или run
. Её основное назначение — помощь в разработке, для конечных пользователей она не представляет особого интереса.
Пример:
ydb workload tpcc --path tpcc/10wh check
Подробнее о параметрах команды:
ydb workload tpcc check --help
Доступные параметры
Имя | Описание | Значение по умолчанию |
---|---|---|
--warehouses или -w |
Количество складов TPC-C. | 10 |
--just-imported |
Включает дополнительные проверки. Используется только сразу после импорта, до запуска каких-либо тестов. |