Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Конфигурация
Справочник по SQL
Часто задаваемые вопросы
Создание набора узлов данных.
CREATE SEGMENT_SET name SEGMENTS (content_id, ...);
Набор сегментов (Segment Set) — это множество узлов данных в кластере, то есть конкретный набор узлов хранения данных. После определения конкретного набора узлов данных его можно указать в операторах языка определения данных (DDL), при создании или изменении объектов, чтобы данные таблицы распределялись только по этим узлам. В противном случае данные будут распределяться по всем узлам кластера по умолчанию.
Два различных набора узлов данных могут содержать один или несколько общих узлов.
Команда CREATE SEGMENT_SET создаёт на уровне базы данных конкретный набор узлов данных. Между набором узлов и таблицами отсутствует зависимость.
NAME
CONTENT_ID
content системной таблицы pg_catalog.gp_segment_configuation.Для кластера из трёх узлов создадим объект SEGMENT_SET с именем ss1, указывающий на узлы данных 0 и 2, и объект ss2, указывающий на узел данных 1:
CREATE SEGMENT_SET ss1 SEGMENTS('0,2');
CREATE SEGMENT_SET ss2 SEGMENTS('1');
Создадим таблицу t1, данные которой будут распределяться только по набору узлов ss1 (узлы 0 и 2). Ниже приведены примеры распределения данных:
CREATE TABLE t1(a int, b int) DISTRIBUTED BY(a) SEGMENT_SET ss1;
CREATE TABLE t1(a int, b int) DISTRIBUTED REPLICATED SEGMENT_SET ss1;
CREATE TABLE t1(a int, b int) DISTRIBUTED RANDOMLY SEGMENT_SET ss1;
При использовании оператора CREATE TABLE LIKE набор узлов данных исходной таблицы копируется. Также можно задать набор вручную, указав объект SEGMENT_SET в конце оператора:
CREATE TABLE t(LIKE t1);
CREATE TABLE t(LIKE t1) SEGMENT_SET ss2;
При использовании оператора CREATE TABLE AS (CTAS) объект SEGMENT_SET указывается после имени таблицы:
CREATE TABLE t SEGMENT_SET ss1 AS SELECT * from t1;
Установка системного значения по умолчанию для SEGMENT_SET:
SET mx_default_segment_set TO 'ss1';
Указание объекта SEGMENT_SET для новой партиции:
## Create SEGMENT_SET object ss1
CREATE SEGMENT_SET ss1 SEGMENTS('0,2');
## Create a t table
CREATE TABLE t(a int, b int) DISTRIBUTED BY(a) PARTITION BY RANGE(b) (DEFAULT PARTITION others SEGMENT_SET ss1);
## Specify the SEGMENT_SET object for the new partition
CREATE TABLE t_part_manual PARTITION OF t FOR VALUES FROM (3) TO (6) SEGMENT_SET ss1;
CREATE SEGMENT_SET является расширением СУБД YMatrix. В стандарте SQL понятие набора узлов отсутствует.