Нагрузочное тестирование YMatrix
На связи Марк — ведущий архитектор группы компаний «ГлоуБайт». Сегодня мы немного расширим результаты нагрузочного тестирования из предыдущей статьи «Нагрузочное тестирование 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.

Тесты, которые проводились:
Тестирование проводилось на одинаковых настройках ОС, за исключением использования cgroups v1 и cgroups v2.

Базовые настройки кластера также совпадают для всех дистрибутивов:
  • max_connections=400,
  • max_prepared_transactions=400,
  • gp_resource_group_memory_limit=0.9.

Настройки ресурсных групп выставлялись одинаковые, с поправкой на изменившийся формат конфигурации, за исключением ситуаций, когда тесты падали по памяти. В таком случае выставлялось значение concurrency, при котором тест отрабатывал без ошибок.

Для YMatrix тестирование проводилось сразу на 8 сегментах на хост, чтобы результаты были сравнимы. 

Стенд тестирования по методике НТ MPP-движков: ВМ в Яндекс Cloud следующего сайзинга:
Для TPC-DS был выбран увеличенный сайзинг для сравнимости результатов с другими движками из этой статьи

Стенд тестирования по методике TPC-DS: ВМ в Яндекс Cloud следующего сайзинга:
Повторюсь, что результаты для GP6, GP7 и CBDB по методике НТ MPP-движков продублированы из предыдущей статьи, чтобы была возможность сравнить результаты «на одном экране». Детальное описание методик тестирования — в статье. Для TPC-DS все тесты были перезапущены на увеличенном сайзинге и в 4 одновременных конкурентных потока, опять же для сравнимости.
Результаты тестирования
Настройки РГ для YMatrix:
Начнем с результатов YMatrix. 
Для YMatrix были проведены тесты с форматами хранения данных AOCO и MARS3.
Результаты сравнения AOCO и MARS3:
Формат MARS3 показывает себя лучше, в случае если удавалось добиться Nested Loop Join, так как данные хранятся в отсортированном виде по ключам соединения. 

Результаты сравнения GP6, GP7, CBDB, YMatrix:
Объемы синтетических данных (при одинаковом количестве строк в таблицах):
Время генерации данных:
Результаты TPC-DS:
Для YMatrix в тестах TPC-DS использовался формат хранения MARS3 для всех объектов.
Какие выводы делаем?
С точки зрения производительности на данный момент YMatrix показывает себя лучше почти во всех тестах, за счет нового формата хранения MARS3 и векторных вычислений.

В ходе тестирования мы выявили ряд нюансов, связанных с этим форматом хранения, все они были переданы вендору и ушли в бэклог развития проекта. 

В начале следующего года мы планируем выпустить большую статью с детальным обзором YMatrix. К этому моменту должны появиться результаты тестирования после доработок MARS3. Также к сравнению добавится Cloudberry 2.0, который вышел совсем недавно. 

На наш взгляд, если вам нужна Enterprise-версия GreenPlum 7, то стоит присмотреться к YMatrix как к альтернативе продукта от Broadcom, который, к сожалению, на данный момент недоступен на нашем рынке.