400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
创建数据节点集合。
CREATE SEGMENT_SET name SEGMENTS (content_id, ...);
Segment Set 指的是集群中的数据节点集合,即特定的一组数据节点。定义了具体的数据节点集合后,在建表或者修改表定义的数据库定义语言(DDL)语句中,可以指定创建过的数据节点集合,使得表的数据仅分布在这些数据节点上,否则会默认分布在集群里所有节点。
两个不同的数据节点集合可以包含相同的某个或多个数据节点。
CREATE SEGMENT_SET 命令在数据库级别创建一个特定的数据节点集合,数据节点集合和表之间不存在依赖关系。
NAME
CONTENT_ID
pg_catalog.gp_segment_configuation
的 content
列。对于 3 节点集群,创建名为 ss1 的 SEGMENT_SET 对象指向数据节点 0 和数据节点 2;创建名为 ss2 的 SEGMENT_SET 对象指向数据节点 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 对象:
## 创建 SEGMENT_SET 对象 ss1
CREATE SEGMENT_SET ss1 SEGMENTS('0,2');
## 创建 t 表
CREATE TABLE t(a int, b int) DISTRIBUTED BY(a) PARTITION BY RANGE(b) (DEFAULT PARTITION others SEGMENT_SET ss1);
## 指定新分区的 SEGMENT_SET 对象
CREATE TABLE t_part_manual PARTITION OF t FOR VALUES FROM (3) TO (6) SEGMENT_SET ss1;
CREATE SEGMENT_SET 是 YMatrix 数据库扩展,SQL 标准中没有节点集合概念。