Этот отчет о производительности сравнивает производительность 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:
statement_mem=1GB использовался для масштаба 100x, а statement_mem=2GB — для масштаба 1 000x.| Таблица | Записи | 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 ГБ |
| Таблица | Записи | 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 ГБ |
Подготовка тестовой среды
gp_vmem_protect_limit и statement_mem в соответствии с аппаратными характеристиками сервера.Скачивание инструмента бенчмарка TPC-H
git clone https://github.com/ymatrix-data/TPC-H.git
Примечание!
Инструмент TPC-H от YMatrix является открытым и прост в использовании. Попробуйте его уже сегодня.
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.
Настройте файл конфигурации 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 было выполнено несколько циклов тестирования. Для сравнения использовались лучшие результаты каждой системы.
compresslevel=1), поскольку открытая версия GPDB не поддерживает quicklz.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 |