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

Хост

Количество

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, который, к сожалению, на данный момент недоступен на нашем рынке. 

Комментарии (0)