TPC-DS нагрузка
Нагрузка базируется на документе TPC-DS документация, а запросы и схемы таблиц адаптированы под YDB.
Тест генерирует типичную рабочую нагрузку в области помощи в принятии решений.
Общие параметры команд
Все команды поддерживают общий параметр --path, который задает путь к каталогу с таблицами в базе данных:
ydb workload tpcds --path tpcds/s1 ...
Доступные параметры
| Имя | Описание | Значение по умолчанию |
|---|---|---|
--path или -p |
Путь к каталогу с таблицами. | / |
Инициализация нагрузочного теста
Перед запуском теста создайте таблицу:
ydb workload tpcds --path tpcds/s1 init
Посмотрите описание команды для запуска нагрузки:
ydb workload tpcds 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 |
--partition-size |
Максимальный размер партиции в мегабайтах (AUTO_PARTITIONING_PARTITION_SIZE_MB) для строчных таблиц | 2000 |
--float-mode <значение> |
Какой тип данных использовать для полей вещественного типа. Возможные значения: double и decimal. double - использовать тип Double, decimal - Decimal с размерностью, заданной стандартом теста. |
double |
--scale |
Задает процент от полного размера данных и нагрузки теста, который будет использоваться. | 1 |
--clear | Если по указанному пути таблица уже была создана, она будет удалена. |
Загрузка данных в таблицу
Загрузите данные в таблицу. Данные будут сгенерированы непосредственно ydb:
ydb workload tpcds --path tpcds/s1 import generator --scale 1
Посмотрите описание команды для загрузки данных:
ydb workload tpcds import --help
Доступные параметры
| Имя | Описание | Значение по умолчанию |
|---|---|---|
--scale <значение> |
Масштаб данных. Обычно используются степени десяти. Так же поддерживается и дробный масштаб, неописанный в спецификации TPC-DS. Он может быть полезен для быстрого тестирования небольших баз YDB. Примеры: 0.1, 0.3 |
|
--tables <значение> |
Список таблиц для генерации, разделенный запятыми. Доступные таблицы: customer, nation, order_line, part_psupp, region, supplier. |
Все таблицы |
--proccess-count <значение> или -C <значение> |
Генерация данных может быть разбита на несколько процессов, этот параметр задает количество процессов. | 1 |
--proccess-index <значение> или -i <значение> |
Генерация данных может быть разбита на несколько процессов, этот параметр задает номер процесса. | 0. |
--state <путь> |
Путь к файлу состояния загрузки. Если загрузка была прервана по какой-то причине, при новом запуске загрузка будет продолжена с того же места. | |
--clear-state |
Актуально, если задан параметр --state. Очистить файл состояния и начать загрузку сначала. |
|
--dry-run |
Не выполнять загрузку данных в базу данных, только подготовить данные и вывести об этом сообщение. |
Общие параметры команды import
| Имя | Описание | Значение по умолчанию |
|---|---|---|
--upload-threads <значение> или -t <значение> |
Количество потоков исполнения для подготовки данных. | Рассчитывает автоматически и равно числу доступных ядер на клиентской машине. |
--bulk-size <значение> |
Размер порции для отправки данных в строках. | 10000 |
--max-in-flight <значение> |
Максимальное количество порций данных, одновременно находящихся в обработке. | 128 |
--file-output-path <значение> или -f <путь> |
Если эта опция установлена, данные не будут загружены в базу данных, а будут сохранены в каталоге <путь>. |
Запуск нагрузочного теста
Запустите нагрузку:
ydb workload tpcds --path tpcds/s1 run
В течение теста на экран выводится статистика по нагрузке для каждого запроса.
Посмотрите описание команды для запуска нагрузки:
ydb workload tpcds run --help
Общие параметры для всех видов нагрузки
| Имя | Описание | Значение по умолчанию |
|---|---|---|
--dry-run |
Не выполнять инициализационные запросы, а только вывести их текст. | |
--check-canonical или -c |
Использовать специальную версию запросов (они имеют детерминированные ответы) и сверять результаты с каноническими. | |
--output <значение> |
Имя файла, в котором будут сохранены результаты выполнения запросов. | results.out |
--iterations <значение> |
Количество выполнений каждого из запросов нагрузки. | 1 |
--json <имя> |
Имя файла, в котором будет сохранена статистика выполнения запросов в формате json. |
Файл не сохраняется |
--ministat <имя> |
Имя файла, в котором будет сохранена статистика выполнения запросов в формате ministat. |
Файл не сохраняется |
--csv <имя> |
Имя файла для сохранения CSV-версии таблицы с результатами. | Файл не сохраняется |
--plan <имя> |
Имя файла для сохранения плана запроса. Если задано, то сохраняются файлы <имя>.<номер запроса>.explain и <имя>.<номер запроса>.<номер итерации> с планами в нескольких форматах: ast, json, svg и table. |
Планы не сохраняется. |
--query-prefix <префикс> |
Префикс запроса. Каждый префикс будет добавлен отдельной строкой в начало каждого запроса. Если нужно указать несколько префиксов, используйте параметр несколько раз. | По умолчанию не задан |
--retries |
Количество повторных попыток выполнения каждого запроса | 0 |
--include |
Имена, номера или диапазоны номеров запросов, которые нужно выполнить в рамках нагрузки. Указываются через запятую, например: 1,2,4-6. |
Все запросы |
--exclude |
Имена, номера или диапазоны номеров запросов, которые нужно исключить из нагрузки. Указываются через запятую, например: 1,2,4-6. |
|
--verbose или -v |
Выводить больше информации на экран в процессе выполнения запросов. | |
--global-timeout <значение> |
Общий таймаут на выполнение всех запросов. Задаётся в текстовом формате, например: 0.5s, 1m, 100us и т.д. |
Отсутствует. Время не ограничино. |
--request-timeout <значение> |
Таймаут на выполнение каждой итерации каждого запроса. Задаётся в текстовом формате, например: 0.5s, 1m, 100us и т.д. |
Отсутствует. Время не ограничино. |
--threads <значение> или -t <значение> |
Количество потоков, генерирующих нагрузку. Ноль означает, что запросы будут выполняться в основном потоке; при ином значении запросы будут перемешаны. | 0 |
Опции, специфичные для TPC-DS
| Имя | Описание | Значение по умолчанию |
|---|---|---|
--syntax <значение> |
Какой вариант синтаксиса запросов использовать: yql или pg (сокращение от PostgreSQL). Про работу с синтаксисом YQL можно прочитать в здесь, а про PostgreSQL здесь. |
yql |
--float_mode <значение> |
Режим работы с числами с плавающей точкой. Может быть float, decimal или decimal_ydb. Если установлено значение float, будет использоваться тип float; decimal означает использование Decimal с каноническим размером, указанным в спецификации TPC-DS (различается для разных полей и таблиц, см. спецификацию); decimal_ydb означает преобразование всех float в Decimal(22, 9). Подробнее про тип Decimal см. в документации. |
float |
--scale <значение> |
Scale factor. См. спецификацию TPC-DS, глава 3. Используется в запросах TPC-DS. Так же поддерживаются и дробные значения, неописанные в спецификации TPC-DS, например 0.1, 0.3. Для масштабов 1, 10, 100, 1000 заданы канонические ответы (см. описание опции --check-canonical). |
1 |
Очистка данных теста
Запустите очистку:
ydb workload tpcds --path tpcds/s1 clean
Команда не имеет параметров.