KqpLoad

Тестирует производительности кластера YDB в целом, нагружая все компоненты через слой Query Processor. Нагрузка, аналогична нагрузке от подкоманды workload YDB CLI, но запускается изнутри кластера.

Вы можете запустить два вида нагрузки:

  • Stock — симулирует работу склада интернет-магазина: создает заказы из нескольких товаров, получает список заказов по клиенту.
  • Key-value — использует БД как key-value хранилище.

Перед началом работы создаются необходимые таблицы, после завершения они удаляются.

Параметры актора

Ниже описаны основные параметры актора. Полный список параметров смотрите в файле load_test.proto Git-репозитория YDB.

Параметр Описание
DurationSeconds Продолжительность нагрузки в секундах.
WindowDuration Размер окна для агрегации статистики.
WorkingDir Путь директории, в которой будут созданы тестовые таблицы.
NumOfSessions Количество параллельных потоков, подающих нагрузку. Каждый поток пишет в свою сессию.
DeleteTableOnFinish Если False, то созданные таблицы не удаляются после завершения работы нагрузки. Может быть полезно в случае, когда при первом запуске актора создается большая таблица, а при последующих выполняются запросы к ней.
UniformPartitionsCount Количество партиций, создаваемых в тестовых таблицах.
WorkloadType Тип нагрузки.
В случае Stoсk:
  • 0 — InsertRandomOrder;
  • 1 — SubmitRandomOrder;
  • 2 — SubmitSameOrder;
  • 3 — GetRandomCustomerHistory;
  • 4 — GetCustomerHistory.
В случае Key-Value:
  • 0 — UpsertRandom;
  • 1 — InsertRandom;
  • 2 — SelectRandom.
Workload Вид нагрузки.
Stock:
  • ProductCount — количество видов товаров.
  • Quantity — количество товаров каждого вида на складе.
  • OrderCount — первоначальное количество заказов в БД.
  • Limit — минимальное количество шардов для таблиц.
Kv:
  • InitRowCount — до начала нагрузки нагружающий актор запишет в таблицу указанное количество строк.
  • StringLen — длина строки value.
  • ColumnsCnt — сколько столбцов использовать в таблице.
  • RowsCnt — сколько строк вставлять или читать в одном SQL запросе.

Примеры

Следующий актор запускает stock-нагрузку БД /slice/db, выполняя простые UPSERT-запросы в 64 потока в течение 30 секунд.

KqpLoad: {
    DurationSeconds: 30
    WindowDuration: 1
    WorkingDir: "/slice/db"
    NumOfSessions: 64
    UniformPartitionsCount: 1000
    DeleteTableOnFinish: 1
    WorkloadType: 0
    Stock: {
        ProductCount: 100
        Quantity: 1000
        OrderCount: 100
        Limit: 10
    }
}

Результатом теста является количество успешных транзакций в секунду, количество повторных попыток исполнения транзакций и количество ошибок.