MatrixBench

В этом документе описаны подробные параметры MatrixBench.

Примечание!
mxbench теперь является проектом с открытым исходным кодом. Просмотр кода и вклад приветствуются. Перейдите по этой ссылке, чтобы прочитать файл README.

1 Файл конфигурации

Параметр Значение по умолчанию Описание
Категория [Database]
--db-database postgres Имя базы данных. Если база не существует, MatrixBench создаст её автоматически; ошибка не возникает, если база уже существует
--db-master-host localhost Имя хоста экземпляра YMatrix Master
--db-master-port 5432 Номер порта экземпляра YMatrix Master
--db-password Пароль пользователя YMatrix
--db-user mxadmin Имя пользователя YMatrix
Категория [Global]
--workspace /tmp/mxbench Каталог для CSV-файлов данных и файлов запросов. В каталоге workspace mxbench создаёт подкаталог с именем, соответствующим временной метке UNIX на момент запуска mxbench. Скрипты DDL, скрипты GUC и файлы запросов генерируются в этом подкаталоге. Если --dump установлено в true, здесь также создаются экспортированные CSV-файлы данных
--dump false Экспорт CSV-файлов данных. Если установлено в true, выполняется только экспорт данных без загрузки и выполнения запросов
--watch true Включить мониторинг процесса. По умолчанию включено. Информация о ходе выполнения из модулей Writer и Benchmark выводится каждые 5 секунд
--log-level info Уровень логирования. Поддерживаемые значения: debug / verbose / info / error
--skip-set-gucs false Пропустить запрос и установку параметров. По умолчанию mxbench запрашивает, нужно ли сбросить и перезапустить базу данных, и выбирает подходящие параметры на основе характеристик данных, определённых в конфигурации
--simultaneous-loading-and-query false Выполнять загрузку данных и выполнение запросов одновременно. По умолчанию сначала загружаются данные, затем выполняются запросы. Если установлено в true, выполняется смешанная нагрузка (загрузка и запросы). В режиме смешанной нагрузки запросы выполняются циклически до завершения загрузки данных
--ddl-file-path Путь к пользовательскому DDL-файлу. По умолчанию DDL генерируется автоматически на основе других конфигураций
--metrics-type float8 Тип данных для метрик. Поддерживаемые типы: int4 / int8 / float4 / float8
--metrics-descriptions Описания метрик. Должны следовать синтаксису, описанному в разделе «Несколько типов данных и характеристик» документации Основные возможности, чтобы генерировать данные с заданными характеристиками
--partition-interval-in-hour 24 Интервал времени (в часах) для партиционирования таблиц в сгенерированном DDL. По умолчанию 24 (один день). Установите значение 0, чтобы mxbench выбрал интервал случайным образом
--realtime false Режим реального времени. Если установлено в true, временные метки в сгенерированных данных основаны на текущем времени выполнения. Каждые --ts-step-in-second секунд генерируется --tag-num строк. Для создания партиций таблиц используются --ts-start и --ts-end
--report-format csv Формат отчёта со статистикой выполнения SQL. Поддерживается только CSV
--report-path /tmp Путь для вывода отчётов со статистикой выполнения SQL
--schema-name public Имя схемы
--table-name Имя таблицы. По умолчанию "", должно быть задано вручную
--tag-num 25000 Количество устройств
--total-metrics-count 300 Общее количество метрик. Если больше 998, дополнительные метрики сохраняются как JSON в столбце с именем "ext"
--ts-start Начальная временная метка для генерируемых данных. Из-за задержек при отправке некоторые данные могут иметь метки времени раньше этого значения
--ts-end Конечная временная метка для генерируемых данных. --ts-end должна быть позже --ts-start; в противном случае возникнет ошибка
--ts-step-in-second 1 Интервал (в секундах) между выборками метрик
Категория [Generator]
--generator telematics Генератор данных. По умолчанию — telematics (телеметрия транспортных средств). Поддерживаемые: telematics / file / nil. file читает данные из CSV-файлов; nil не генерирует данные
generator = "telematics"
--generator-batch-size 1 Количество строк на устройство на временную метку, отправляемое в YMatrix. Например, если установлено значение 5, данные для устройства tag1 во временную метку 2022-04-25 09:00:03 разделяются на 5 строк и объединяются в один кортеж. По умолчанию 1 (разделение отсутствует)
--generator-disorder-ratio 0 Доля данных с нарушенным порядком (с задержкой). Диапазон: 0~100. По умолчанию: 0 (нет задержанных данных)
--generator-empty-value-ratio 90 Процент значений NULL в каждой строке. Диапазон: 0–100. По умолчанию: 90%
--generator-randomness OFF Уровень случайности данных. Поддерживаемые значения: OFF / S / M / L
--generator-num-goroutine 1 Количество параллельных goroutines для генерации данных
--generator-write-batch-size 4 Размер буфера для сгенерированных данных (в МБ)
generator = "file"
--generator-file-paths Абсолютные пути к CSV-файлам данных. Можно указать несколько файлов в виде массива
--generator-batch-size 1 То же, что параметр generator = "telematics"'s --generator-batch-size (необязательно; недействительно при использовании пользовательского DDL)
--generator-empty-value-ratio 90 То же, что параметр generator = "telematics"'s --generator-empty-value-ratio (необязательно; недействительно при использовании пользовательского DDL)
generator = "nil" (дополнительных параметров нет)
Категория [Writer]
--writer Метод запуска mxgate и записи данных. Поддерживаемые: http / stdin / nil
writer = "http"
--writer-use-gzip false Сжимать ли HTTP-сообщения с помощью Gzip
--writer-parallel 8 Уровень параллелизма при отправке данных в mxgate
--writer-mxgate-path Путь переменной окружения Путь к исполняемому файлу mxgate. По умолчанию используется путь из переменной окружения
--writer-progress-format list Формат вывода прогресса Writer. Поддерживаемые: list / json
--writer-progress-include-table-size false Включать ли размер таблицы в прогресс Writer
--writer-progress-with-timezone false Включать ли информацию о часовом поясе в прогресс Writer
--writer-interval -1 Устанавливает параметр mxgate --interval. По умолчанию -1 (выбирается автоматически mxbench; расширенный параметр отладки)
--writer-stream-prepared -1 Устанавливает параметр mxgate --stream-prepared. По умолчанию -1 (выбирается автоматически mxbench; расширенный параметр отладки)
writer = "stdin"
--writer-mxgate-path Путь переменной окружения То же, что параметр writer = "http"'s --writer-mxgate-path
--writer-progress-format list То же, что параметр writer = "http"'s --writer-progress-format
--writer-progress-include-table-size false То же, что параметр writer = "http"'s --writer-progress-include-table-size
--writer-progress-with-timezone false То же, что параметр writer = "http"'s --writer-progress-with-timezone
--writer-interval -1 То же, что параметр writer = "http"'s --writer-interval
--writer-stream-prepared -1 То же, что параметр writer = "http"'s --writer-stream-prepared
writer = "nil" (дополнительных параметров нет)
Категория [Benchmark]
--benchmark telematics Генератор и исполнитель запросов. Поддерживаемые: telematics / nil
benchmark = "telematics"
--benchmark-run-query-names Список имён телематических запросов для последовательного выполнения.
Поддерживаемые запросы:
1. SINGLE_TAG_LATEST_QUERY: Получить последние метрики для одного транспортного средства;
2. MULTI_TAG_LATEST_QUERY: Случайно выбрать 10 транспортных средств и получить их последние метрики;
3. SINGLE_TAG_DETAIL_QUERY: Получить метрики для одного транспортного средства за временной диапазон;
Пример: [ "SINGLE_TAG_LATEST_QUERY", "MULTI_TAG_LATEST_QUERY", "SINGLE_TAG_DETAIL_QUERY" ] выполняет все три запроса последовательно. Остальные имена игнорируются. По умолчанию пусто (запросы не выполняются)
--benchmark-custom-queries Пользовательские запросы, разделённые запятыми. Пример: ["SELECT COUNT(*) from t1", "SELECT MAX(ts) from t1"]. По умолчанию пусто (нет пользовательских запросов)
--benchmark-combination-queries Выражение для составных запросов. Должно следовать синтаксису, описанному в разделе «Составные запросы» документации Основные возможности
--benchmark-progress-format list Формат вывода прогресса Benchmark. Поддерживаемые: list / json
--benchmark-parallel Параллелизм выполнения запросов. Можно указать несколько уровней, разделённых запятыми. Пример: [1, 8] выполняет запросы сначала с параллелизмом 1, затем с 8. По умолчанию пусто
--benchmark-run-times 0 Количество выполнений каждого запроса на каждом уровне параллелизма. Mxbench использует несколько запусков для расчёта статистики задержки и TPS
--benchmark-runtime-in-second 60 Продолжительность (в секундах) выполнения каждого запроса на каждом уровне параллелизма. Используется для статистики задержки и TPS. Этот параметр действует только при --benchmark-run-times = 0
benchmark = "nil"

2 Аргументы командной строки

Опция командной строки Описание
--run Запустить mxbench из командной строки
--config Вывести полный шаблон файла конфигурации
--help Показать справку и список параметров
--version Показать версию

Примечание!
Для основных возможностей см. Основные возможности MatrixBench.
Для подробностей о сообщениях хода выполнения и статистических отчётах см. MatrixBench: понимание информации о ходе выполнения и отчётах.