Данный отчет о производительности сравнивает производительность YMatrix и Greenplum (далее GPDB) в сценариях аналитических запросов TPC-H. Результаты тестирования показывают, что YMatrix значительно превосходит GPDB при двух масштабах данных: 100 и 1000, с улучшением производительности на 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 выполнен в режиме одиночного развертывания с использованием метода развертывания по умолчанию, автоматически выбранного продуктами YMatrix. В описанной выше аппаратной среде задействовано 6 узлов Segment.
YMatrix и GPDB были протестированы на масштабах данных 100 и 1000 соответственно. И YMatrix, и GPDB были настроены на 6 сегментов, и все результаты тестирования измерялись инженерами YMatrix с использованием одинаковой конфигурации оборудования.
Различия между тестами на масштабах 100 и 1000 следующие:
compresslevel=1; открытая версия GPDB не поддерживает формат сжатия quicklz, поэтому используется только zstd, compresslevel=1.compresslevel=1.statement_mem=1GB применяется при масштабе данных 100, а statement_mem=2GB — при масштабе данных 1000.Данные TPC-H масштаба 100:
| Таблица | Записи | 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 масштаба 1000:
| Таблица | Записи | 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 benchmark
git clone https://github.com/ymatrix-data/TPC-H.git
Примечание!
Инструмент TPC-H от YMatrix является открытым и простым в использовании — приглашаем попробовать.
Выполнение скрипта tpch.sh
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использует для YMatrix метод загрузки на основе инструмента MatrixGate, а для GPDB — метод на основе инструмента gpfdist.
Вы можете настроить конкретные требования, настраивая файл конфигурации 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 будут выполняться 3 раза, при этом один результат — прогрев, и из двух оставшихся результатов берется минимальное значение.Пример:
Если вы хотите повторить выполнение запросов 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 были протестированы в нескольких группах, и сравнение производительности проводилось на основе лучших результатов.
Данные производительности YMatrix TPC-H 100 используют формат сжатия lz4, а данные производительности GPDB TPC-H 100 используют zstd, compresslevel=1. Поскольку открытая версия GPDB не поддерживает формат сжатия quicklz, для сравнения в настоящее время можно использовать только zstd;
Данные производительности TPC-H 1000 для YMatrix и GPDB используют оба формат сжатия zstd, compresslevel=1.
В плане производительности YMatrix значительно превосходит GPDB: оба масштаба TPC-H 100 и 1000 показывают более чем в 10 раз лучшую производительность по сравнению с GPDB.
| Масштаб данных | GPDB (мс) | YMatrix (мс) | Коэффициент улучшения |
|---|---|---|---|
| 100 | 930 071 | 70 044 | 1300% |
| 1000 | 15 273 254 | 1 265 478 | 1200% |


Ниже приведены подробные результаты тестирования. YMatrix TPC-H 100 тестировался в двух форматах сжатия: lz4 и zstd. При этом lz4 показал лучшую производительность, поскольку память сервера в этом тесте достаточна для полного кэширования всех файлов данных, поэтому коэффициент сжатия ниже, но благодаря лучшей производительности декомпрессии формат lz4 достигает более высокой производительности.
GPDB тестировался в сценариях с включенным и выключенным ORCA, и было обнаружено, что производительность ORCA хуже в сценарии TPC-H 1000, а лучше — в сценарии TPC-H 100. Кроме того, все тесты YMatrix проводились при выключенном ORCA.
| (мс) | YMatrix TPC-H 100 planner lz4 | YMatrix TPC-H 100 planner zstd | GPDB TPC-H 100 orca zstd | GPDB TPC-H 1000 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 |