Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по 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 понятие набора узлов отсутствует.