Сравнительный отчет по бенчмарку TPC-H: YMatrix против Greenplum

Обзор теста


Этот отчет о производительности сравнивает производительность YMatrix и Greenplum (GPDB) в сценариях аналитических запросов на основе бенчмарка TPC-H. Результаты теста показывают, что YMatrix значительно превосходит GPDB как при масштабе данных 100x, так и при масштабе 1 000x, достигая ускорения в 13 раз и 12 раз соответственно.

TPC-H — это бенчмарк для систем поддержки принятия решений, включающий набор бизнес-ориентированных ад-хок-запросов и параллельных операций изменения данных. Выбранные запросы и шаблоны данных широко применимы в различных отраслях. Этот бенчмарк демонстрирует способность систем поддержки принятия решений анализировать большие объемы данных, выполнять чрезвычайно сложные запросы и отвечать на критически важные бизнес-вопросы — отражая множество аспектов обработки запросов в системах управления базами данных.

Тестовая среда


Аппаратная конфигурация

Масштаб данных Машина vCPU ОЗУ Пропускная способность EBS
100 AWS EC2, m5.8xlarge 32 128 ГБ 10 Гбит/с gp3, iops = 3000, throughput = 125 МБ/с
1000 AWS EC2, m5.8xlarge 32 128 ГБ 10 Гбит/с io1, iops = 64000

Программная конфигурация

Бенчмарк TPC-H для YMatrix использует однокластерную развертку с автоматически выбранными параметрами по умолчанию. На описанном выше оборудовании это соответствует 6 узлам Segment.

Методология тестирования


Тесты проводились на двух масштабах данных: 100x и 1 000x. И YMatrix, и GPDB были настроены с 6 Segmentами. Все результаты тестов получены инженерами YMatrix при идентичной конфигурации оборудования.

Ключевые различия между тестами на масштабах 100x и 1 000x:

  • При масштабе 100x данные полностью помещаются в память (128 ГБ), поэтому использовалось хранилище gp3. YMatrix тестировал как формат сжатия lz4, так и zstd. Поскольку открытая версия GPDB не поддерживает quicklz, для GPDB использовался только формат zstd.
  • При масштабе 1 000x применялось более производительное хранилище io1. И YMatrix, и GPDB использовали сжатие zstd.
  • В данном тесте statement_mem=1GB использовался для масштаба 100x, а statement_mem=2GB — для масштаба 1 000x.

Данные теста


Данные TPC-H масштаба 100x

Таблица Записи YMatrix(lz4) YMatrix(zstd) GPDB(zstd)
nation 25 5 МБ 5 МБ 1 МБ
region 5 4 МБ 4 МБ 1 МБ
part 20 000 000 1 ГБ 690 МБ 592 МБ
partsupp 80 000 000 4 ГБ 3 ГБ 3 ГБ
supplier 1 000 000 97 МБ 70 МБ 55 МБ
customer 15 000 000 1 ГБ 969 МБ 861 МБ
orders 150 000 000 7 ГБ 5 ГБ 4 ГБ
lineitem 600 037 902 34 ГБ 19 ГБ 18 ГБ

Данные TPC-H масштаба 1 000x

Таблица Записи YMatrix(zstd) GPDB(zstd)
nation 25 5 МБ 1 МБ
region 5 4 МБ 1 МБ
part 200 000 000 5 ГБ 5 ГБ
partsupp 800 000 000 29 ГБ 31 ГБ
supplier 10 000 000 616 МБ 538 МБ
customer 150 000 000 8 ГБ 8 ГБ
orders 1 500 000 000 46 ГБ 46 ГБ
lineitem 5 999 989 709 185 ГБ 184 ГБ

Процедура тестирования


  1. Подготовка тестовой среды

  2. Скачивание инструмента бенчмарка TPC-H

    git clone https://github.com/ymatrix-data/TPC-H.git

Примечание!
Инструмент TPC-H от YMatrix является открытым и прост в использовании. Попробуйте его уже сегодня.

  1. Запуск скрипта tpch.sh
  • Установите переменные окружения базы данных, включая PORT и DATABASE:

     export PGPORT=5432
     export PGDATABASE=tpch_s100
  • Запустите скрипт tpch.sh для генерации файла конфигурации tpch_variable.sh. Используйте параметр -d для указания типа базы данных (например, matrixdb, greenplum, postgresql) и -s для определения масштаба данных:

     ./tpch.sh -d matrixdb -s 100
  • После изменения файла конфигурации запустите tpch.sh. Этот скрипт автоматически генерирует данные, создает таблицы, загружает данные, выполняет все запросы TPC-H и фиксирует времена выполнения:

     ./tpch.sh

Примечание!
При загрузке данных скрипт tpch.sh использует MatrixGate для YMatrix и gpfdist для GPDB.

  1. Ключевые параметры в инструменте бенчмарка TPC-H

Настройте файл конфигурации tpch_variable.sh в соответствии с вашими требованиями:

  • RUN_GEN_DATA="true": Генерация данных
  • RUN_DDL="true": Создание таблиц и индексов
  • RUN_LOAD="true": Загрузка данных
  • RUN_SQL="true": Выполнение всех запросов TPC-H
  • PREHEATING_DATA="true": Указание количества циклов разогрева для кэширования файлов данных
  • SINGLE_USER_ITERATIONS="2": Если включено PREHEATING_DATA="true", запросы TPC-H выполняются три раза. Первый — разогрев; фиксируется минимальное значение из двух последних запусков.

Пример:

Чтобы повторить выполнение запросов TPC-H, измените следующие параметры в файле конфигурации tpch_variable.sh:

`RUN_COMPILE_TPCH="false"`
`RUN_GEN_DATA="false"`
`RUN_INIT="false"`
`RUN_LOAD="false"`
`RUN_SQL="true"`
`RUN_SINGLE_USER_REPORT="true"`

Затем повторно запустите tpch.sh.

Результаты теста


Для YMatrix и GPDB было выполнено несколько циклов тестирования. Для сравнения использовались лучшие результаты каждой системы.

  • Для TPC-H 100x YMatrix использовал сжатие lz4, а GPDB — zstd (compresslevel=1), поскольку открытая версия GPDB не поддерживает quicklz.
  • Для TPC-H 1 000x обе системы использовали сжатие zstd (compresslevel=1).

Результаты производительности показывают, что YMatrix значительно превосходит GPDB — более чем в 10 раз быстрее как при масштабе 100x, так и при масштабе 1 000x.

Масштаб данных GPDB (мс) YMatrix (мс) Ускорение
100 930 071 70 044 1300%
1000 15 273 254 1 265 478 1200%

Подробные результаты представлены ниже. YMatrix протестировал TPC-H 100 с использованием сжатия как lz4, так и zstd. Формат lz4 показал лучшую производительность, поскольку доступная память (128 ГБ) могла полностью уместить набор данных. Таким образом, формат lz4 с меньшим уровнем сжатия, но более быстрой декомпрессией обеспечил превосходящую производительность.

GPDB тестировался с включенным и отключенным оптимизатором ORCA. ORCA снижал производительность при масштабе 100x, но слегка улучшал её при масштабе 1 000x. Все тесты YMatrix проводились с отключенным ORCA.

(мс) YMatrix TPC-H 100 planner lz4 YMatrix TPC-H 100 planner zstd GPDB TPC-H 100 orca zstd GPDB TPC-H 100 planner zstd YMatrix TPC-H 1000 planner zstd GPDB TPC-H 1000 orca zstd GPDB TPC-H 1000 planner zstd
Q01 4 200 4 846 94 271 90 473 53 291 929 166 907 474
Q02 1 228 1 417 13 134 11 005 12 960 163 967 132 898
Q03 4 409 4 860 31 654 32 057 50 194 406 933 456 339
Q04 4 965 4 947 40 743 30 522 103 699 492 440 429 417
Q05 4 405 5 226 43 100 40 094 88 930 787 161 569 668
Q06 183 254 4 066 3 995 2 852 40 141 38 985
Q07 1 865 2 219 29 294 28 879 29 921 340 402 402 481
Q08 2 239 3 123 51 852 49 998 41 305 610 720 650 542
Q09 7 012 8 229 84 506 91 597 248 033 1 072 529 1 719 890
Q10 3 861 4 469 61 953 28 238 64 568 810 094 395 927
Q11 470 569 5 937 10 010 6 475 54 006 97 012
Q12 2 319 2 486 27 271 30 032 26 964 326 579 335 811
Q13 4 610 4 458 34 345 26 018 72 861 631 285 651 340
Q14 588 696 5 591 3 318 7 277 48 476 47 320
Q15 1 310 1 249 9 579 12 001 31 236 93 387 172 448
Q16 1 471 1 584 8 493 22 038 25 295 141 958 492 614
Q17 1 613 1 960 154 488 143 057 28 158 3 299 179 3 272 970
Q18 7 225 6 950 78 451 89 587 93 391 1 064 011 1 276 977
Q19 3 225 4 173 22 224 21 027 40 080 217 796 208 500
Q20 850 1 004 24 920 24 818 9 596 293 892 421 818
Q21 10 219 10 529 149 483 128 112 205 788 2 427 732 2 420 413
Q22 1 777 1 858 19 866 13 196 22 603 226 963 172 399
SUM 70 044 77 107 995 221 930 071 1 265 478 14 478 829 15 273 254