Шардирование в Yandex MPP Analytics for PostgreSQL
Шардирование — это стратегия горизонтального масштабирования кластера Yandex MPP Analytics for PostgreSQL, при которой части каждой таблицы в базе данных размещаются на разных хостах-сегментах. Каждый запрос на запись или чтение в Yandex MPP Analytics for PostgreSQL утилизирует все сегменты кластера.
Ключ дистрибуции
Для оптимизации работы операций JOIN с большими таблицами вы можете задать ключ дистрибуции явным образом. В таком случае при соединении таблиц по указанным в ключе полям операция будет производиться локально на сегменте, и запрос отработает быстрее.
Подробнее о ключе дистрибуции в Greenplum 6
Для создания таблицы с ключом дистрибуции передайте одно или несколько нужных полей в аргументе DISTRIBUTED BY:
CREATE TABLE tableName
(
column1 type1,
column2 type2,
...
columnN typeN
) DISTRIBUTED BY (column1);
Неверно выбранный ключ может привести к тому, что большая часть данных будет храниться на одном сегменте — это повлечет за собой снижение производительности кластера или остановку работы сегмента, если на его хосте закончится место. Поэтому не выбирайте в качестве ключа дистрибуции:
- поля с временем и датой;
- поля, в которых может оказаться большое количество одинаковых значений;
- поля с большим количеством значений
NULL.
Примечание
Если при создании таблицы не указать ключ дистрибуции, то данные распределятся по хостам-сегментам либо по первичному ключу (если он задан), либо по первому полю таблицы.
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.
Apache® и Apache Cloudberry™ являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и/или других странах.