---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ydb.tech/docs/en/reference/ydb-cli/workload-tpch.md?version=main
  - https://ydb.tech/docs/ru/reference/ydb-cli/workload-tpch.md?version=main
sourcePath: ru/core/reference/ydb-cli/workload-tpch.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# TPC-H нагрузка

Нагрузка базируется на документе TPC-H [документация](https://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_v2.17.1.pdf), а запросы и схемы таблиц адаптированы под YDB.

Тест генерирует типичную рабочую нагрузку в области помощи в принятии решений.

## Общие параметры команд

Все команды поддерживают общий параметр `--path`, который задает путь к каталогу с таблицами в базе данных:

```bash
ydb  workload tpch --path tpch/s1 ...
```

### Доступные параметры {#common_options}

| Имя                | Описание                     | Значение по умолчанию  |
|--------------------|------------------------------|------------------------|
|  `--path` или `-p` | Путь к каталогу с таблицами. | `/`                    |

## Инициализация нагрузочного теста { #init }

Перед запуском теста создайте таблицу:

```bash
ydb workload tpch --path tpch/s1 init
```

Посмотрите описание команды для инициализации табилц:

```bash
ydb workload tpch init --help
```

<!-- source: ru/reference/ydb-cli/_includes/workload/init_options_tpc.md -->
### Доступные параметры {#init_options}

Имя | Описание | Значение по умолчанию
---|---|---
`--store <значение>` | Тип хранилища таблиц. Возможные значения: `row`, `column`, `external-s3`. | `column`
`--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` | Если по указанному пути таблица уже была создана, она будет удалена. |
<!-- endsource: ru/reference/ydb-cli/_includes/workload/init_options_tpc.md -->

## Загрузка данных в таблицу { #load }

Загрузите данные в таблицу. Данные будут сгенерированы непосредственно ydb:

```bash
ydb workload tpch --path tpch/s1 import generator --scale 1
```

Посмотрите описание команды для загрузки данных:

```bash
ydb workload tpch import --help
```

### Доступные параметры { #load_files_options }

| Имя                                               | Описание                                                                                                                                       | Значение по умолчанию |
|---------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
| `--scale <значение>`                              | Масштаб данных. Обычно используются степени десяти. Поддерживается и дробный масштаб, хотя он и не описан в спецификации TPC-H.                |                       |
| `--tables <значение>`                             | Список таблиц для генерации, разделенный запятыми. Доступные таблицы: `customer`, `nation`, `order_line`, `part_psupp`, `region`, `supplier`.  | Все таблицы.          |
| `--proccess-count <значение>` или `-C <значение>` | Генерация данных может быть разбита на несколько процессов, этот параметр задает количество процессов.                                      | 1                     |
| `--proccess-index <значение>` или `-i <значение>` | Генерация данных может быть разбита на несколько процессов, этот параметр задает номер процесса.                                            | 0                     |
| `--state <путь>`                                  | Путь к файлу состояния загрузки. Если загрузка была прервана по какой-то причине, при новом запуске загрузка будет продолжена с того же места. |                       |
| `--clear-state`                                   | Актуально, если задан параметр `--state`. Очистить файл состояния и начать загрузку сначала.                                                   |                       |
| `--dry-run`                                       | Не выполнять загрузку данных в базу данных, только подготовить данные и вывести об этом сообщение.   |                            |

<!-- source: ru/reference/ydb-cli/_includes/workload/load_options.md -->
### Общие параметры команды import {#load_options}

| Имя | Описание | Значение по умолчанию |
|---|---|---|
| `--upload-threads <значение>` или `-t <значение>` | Количество потоков исполнения для подготовки данных. | Рассчитывается автоматически и равно числу доступных ядер на клиентской машине. |
| `--bulk-size <значение>` | Размер порции для отправки данных в строках. | 10000 |
| `--max-in-flight <значение>` | Максимальное количество порций данных, одновременно находящихся в обработке. | 128 |
| `--file-output-path <значение>` или `-f <путь>` | Если эта опция установлена, данные не будут загружены в базу данных, а будут сохранены в каталоге <путь>. |  |
<!-- endsource: ru/reference/ydb-cli/_includes/workload/load_options.md -->

## Запуск нагрузочного теста { #run }

Запустите нагрузку:

```bash
ydb workload tpch --path tpch/s1 run
```

В течение теста на экран выводится статистика по нагрузке для каждого запроса.

Посмотрите описание команды для запуска нагрузки:

```bash
ydb workload tpch run --help
```

<!-- source: ru/reference/ydb-cli/_includes/workload/run_options.md -->
### Общие параметры для всех видов нагрузки {#run_options}

| Имя | Описание | Значение по умолчанию |
|---|---|---|
| `--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` |
| `--stats <значение>` | Режим сбора расширенной статистики выполнения. Возможные значения: `full`, `profile`. | `full` |
<!-- endsource: ru/reference/ydb-cli/_includes/workload/run_options.md -->

### Опции, специфичные для TPC-H { #run_tpch_options }

| Имя                       | Описание                                                                                                         | Значение по умолчанию |
|---------------------------|------------------------------------------------------------------------------------------------------------------|-----------------------|
| `--syntax <значение>`     | Какой вариант синтаксиса запросов использовать: `yql`. Про работу с синтаксисом YQL можно прочитать [здесь](../../yql/reference/index.md).                                                   | `yql`                 |
| `--float_mode <значение>` | Режим работы с числами с плавающей точкой. Может быть `float`, `decimal` или `decimal_ydb`. Если установлено значение `float` - будет использоваться float, `decimal` означает, что будет использоваться decimal с каноническим размером, указанным в спецификации TPC-H(`Decimal(12, 2)`), а `decimal_ydb` означает, что все float будут преобразованы в `Decimal(22, 9)`. Подробнее про тип Decimal можно посмотреть в [документации](../../yql/reference/types/primitive.md#numeric). | `float`                 |
| `--scale <значение>`      | Scale factor. См. спецификацию TPC-H п.4.1.3. Поддерживаются и дробные значения, хотя они и не описаны в спецификации TPC-H. Для масштабов `0.1`, `0.2`, `0.5`, `1`, `10`, `100`, `1000`, `10000` заданы каноничные ответы (см. описание опции `--check-canonical`). | 1                     |

## Очистка данных теста { #cleanup }

Запустите очистку:

```bash
ydb workload tpch --path tpch/s1 clean
```

Команда не имеет параметров.
