Работа с политиками распределения данных в Yandex MPP Analytics for PostgreSQL
В Yandex MPP Analytics for PostgreSQL все таблицы в базе данных построчно распределены по хостам-сегментам кластера. Для каждой таблицы задается политика распределения данных, которая определяет правило, по которому строки распределяются между сегментами. Подробнее о политиках распределения в разделе Распределение данных в Yandex MPP Analytics for PostgreSQL.
При работе с политиками распределения данных вы можете:
- задать политику распределения для новой таблицы;
- изменить политику и ключ распределения для существующей таблицы;
- перераспределить данные вручную между сегментами.
Задать политику распределения
Чтобы задать политику распределения, выполните команду:
-
Для хеш-распределения:
CREATE TABLE <имя_таблицы> ( <описание_столбцов> ) DISTRIBUTED BY (<ключ_распределения>);Где
<ключ_распределения>— один или несколько столбцов через запятую. -
Для случайного распределения:
CREATE TABLE <имя_таблицы> ( <описание_столбцов> ) DISTRIBUTED RANDOMLY; -
Для реплицированного распределения:
CREATE TABLE <имя_таблицы> ( <описание_столбцов> ) DISTRIBUTED REPLICATED;
Изменить политику распределения
Важно
Если у таблицы есть первичный ключ или уникальное ограничение, изменить ее политику с хеш-распределения на случайное распределение нельзя.
Чтобы изменить политику распределения или ключ распределения, выполните команду:
-
Изменить на хеш-распределение или выбрать новый ключ распределения:
ALTER TABLE <имя_таблицы> SET DISTRIBUTED BY (<ключ_распределения>);Где
<ключ_распределения>— один или несколько столбцов через запятую. -
Изменить на случайное распределение:
ALTER TABLE <имя_таблицы> SET DISTRIBUTED RANDOMLY; -
Изменить на реплицированное распределение:
ALTER TABLE <имя_таблицы> SET DISTRIBUTED REPLICATED;
При изменении политики данные автоматически перераспределяются между сегментами, кроме следующих случаев:
- когда политика меняется с хеш-распределения на случайное распределение;
- когда в предложении
DISTRIBUTEDуказаны текущие настройки политики распределения.
При необходимости вы можете перераспределить данные вручную.
Перераспределить данные вручную
Чтобы перераспределить данные, например при изменении политики с хеш-распределения на случайное распределение, выполните команду:
ALTER TABLE <имя_таблицы>
SET WITH (REORGANIZE=TRUE);
При расширении кластера Yandex MPP Analytics for PostgreSQL данные перераспределяются автоматически, и запускать эту команду вручную не нужно.