
Привет, Хабр! На связи Марк — ведущий архитектор группы компаний «ГлоуБайт». Сегодня мы немного расширим результаты нагрузочного тестирования из предыдущей статьи «Нагрузочное тестирование GP6 vs GP7 vs Cloudberry» и поделимся результатами тестирования YMatrix. Сразу оговорюсь, что это дополнение к предыдущей статье, для того, чтобы сформировать понимание сравнимости результатов различных форков GreenPlum, поэтому акцентировать внимание будем только на YMatrix. Детали по методике тестирования и как были получены результаты для GP6, GP7 и Cloudberry 1.6, можно прочитать в предыдущей статье по ссылке выше.
По YMatrix у нас планируется отдельный материал с обзором особенностей и функциональности, поэтому тут будет только краткий экскурс.
Кто такой этот YMatrix?

На Хабре я не нашел ни одной статьи по YMatrix, а в профильном ТГ-сообществе GreenPlum Russia было найдено всего одно упоминание. На российском рынке MPP-систем это совсем новый зверь.
YMatrix была основана в 2020 году в Пекине выходцами из R&D команды GreenPlum.

В команде YMatrix 2 из 5 топ-контрибьюторов Greenplum (ключевые разработчики, менявшие исходный код), на которых приходится примерно 20% вклада в R&D GreenPlum. Ядро команды разработки состоит из 30+ разработчиков, занимающихся развитием основных фичей.
Как продукт, YMatrix представляет из себя активно развивающийся форк GreenPlum 7 с большим количеством доработок и изменений.
Что особенно хотелось бы отметить:
MARS3 — гибридный колоночно‑строчный формат хранения, реализованный через структуру LSM Tree (Log‑Structured Merge Tree), которая позволяет хранить данные в отсортированном виде по указанным полям;
Domino — потоковая репликация данных для обеспечения высокой доступности;
MXShift — инструмент для полной, инкрементальной или условной миграции данных между кластерами GreenPlum/YMatrix в кластер YMatrix;
MXVector — все вычисления производятся в векторизованном виде. В сценариях с большими объёмами данных это значительно повышает скорость выполнения запросов;
YMatrix Cloudedition — раздельное хранение и вычисление данных. Позволяет хранить бинарные файлы в Object Storage.
Подготовка к тестированию
Наши подопытные:
Open Source GreenPlum 6.27.1 — последняя open source версия GP6;
Open Source GreenPlum 7.2;
CloudBerry 1.6.0;
YMatrix 6.6.
Тесты, которые проводились:
Тестирование по методике TPC DS.
Тестирование проводилось на одинаковых настройках ОС, за исключением использования cgroups v1 и cgroups v2.
Базовые настройки кластера также совпадают для всех дистрибутивов:
max_connections=400,
max_prepared_transactions=400,
gp_resource_group_memory_limit=0.9.
Настройки ресурсных групп выставлялись одинаковые, с поправкой на изменившийся формат конфигурации, за исключением ситуаций, когда тесты падали по памяти. В таком случае выставлялось значение concurrency, при котором тест отрабатывал без ошибок.
Для YMatrix тестирование проводилось сразу на 8 сегментах на хост, чтобы результаты были сравнимы.
Стенд тестирования по методике НТ MPP-движков: ВМ в Яндекс Cloud следующего сайзинга:
Хост | Количество | vCPU | RAM | SSD |
Master | 1 | 8 | 64 | 1,5TB |
Segment | 4 | 16 | 128 | 2TBx4 |
Для TPC-DS был выбран увеличенный сайзинг для сравнимости результатов с другими движками из этой статьи.
Стенд тестирования по методике TPC-DS: ВМ в Яндекс Cloud следующего сайзинга:
Хост | Количество | vCPU | RAM | SSD |
Master | 1 | 8 | 64 | 1,5TB |
Segment | 4 | 32 | 252 | 2TBx4 |
Повторюсь, что результаты для GP6, GP7 и CBDB по методике НТ MPP-движков продублированы из предыдущей статьи, чтобы была возможность сравнить результаты «на одном экране». Детальное описание методик тестирования — в статье. Для TPC-DS все тесты были перезапущены на увеличенном сайзинге и в 4 одновременных конкурентных потока, опять же для сравнимости.
Результаты тестирования
Настройки РГ для YMatrix:
concurrency | cpu_max_percent | cpu_weight | cpuset | memory_limit | min_cost | io_limit |
10 | 100 | 500 | -1 | 80 | 0 | -1 |
Начнем с результатов YMatrix.
Для YMatrix были проведены тесты с форматами хранения данных AOCO и MARS3.
Результаты сравнения AOCO и MARS3:

Формат MARS3 показывает себя лучше, в случае если удавалось добиться Nested Loop Join, так как данные хранятся в отсортированном виде по ключам соединения.
Результаты сравнения GP6, GP7, CBDB, YMatrix:



Объемы синтетических данных (при одинаковом количестве строк в таблицах):
GP6, GB | GP7, GB | CBDB, GB | YM, GB | |
Contractor | 1 | 1.5 | 1 | 1.5 |
Account | 19 | 17 | 17 | 17 |
Agreement | 10 | 9 | 8 | 9 |
Document | 419 | 389 | 389 | 388 |
Transaction | 866 | 835 | 687 | 845 |
Transaction индексы | 7 | |||
Сумма | 1315 | 1251.5 | 1109 | 1262 |
Время генерации данных:
GP6, сек | GP7, сек | CBDB, сек | YM, сек |
19800 | 17600 | 25200 | 20150 |
Результаты TPC-DS:


Для YMatrix в тестах TPC-DS использовался формат хранения MARS3 для всех объектов.
Какие выводы делаем?
С точки зрения производительности на данный момент YMatrix показывает себя лучше почти во всех тестах, за счет нового формата хранения MARS3 и векторных вычислений.
В ходе тестирования мы выявили ряд нюансов, связанных с этим форматом хранения, все они были переданы вендору и ушли в бэклог развития проекта.
В начале следующего года мы планируем выпустить большую статью с детальным обзором YMatrix. К этому моменту должны появиться результаты тестирования после доработок MARS3. Также к сравнению добавится Cloudberry 2.0, который вышел совсем недавно.
На наш взгляд, если вам нужна Enterprise-версия GreenPlum 7, то стоит присмотреться к YMatrix как к альтернативе продукта от Broadcom, который, к сожалению, на данный момент недоступен на нашем рынке.
