YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
SQL 参考
- ABORT
- ALTER_DATABASE
- ALTER_EXTENSION
- ALTER_EXTERNAL_TABLE
- ALTER_FOREIGN_DATA_WRAPPER
- ALTER_FOREIGN_TABLE
- ALTER_FUNCTION
- ALTER_INDEX
- ALTER_RESOURCE_GROUP
- ALTER_RESOURCE_QUEUE
- ALTER_ROLE
- ALTER_RULE
- ALTER_SCHEMA
- ALTER_SEQUENCE
- ALTER_SERVER
- ALTER_TABLE
- ALTER_TABLESPACE
- ALTER_TYPE
- ALTER_USER_MAPPING
- ALTER_VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- COMMIT
- COPY
- CREATE_DATABASE
- CREATE_EXTENSION
- CREATE_EXTERNAL_TABLE
- CREATE_FOREIGN_DATA_WRAPPER
- CREATE_FOREIGN_TABLE
- CREATE_FUNCTION
- CREATE_INDEX
- CREATE_RESOURCE_GROUP
- CREATE_RESOURCE_QUEUE
- CREATE_ROLE
- CREATE_RULE
- CREATE_SCHEMA
- CREATE_SEGMENT_SET
- CREATE_SEQUENCE
- CREATE_SERVER
- CREATE_TABLE
- CREATE_TABLE_AS
- CREATE_TABLESPACE
- CREATE_TYPE
- CREATE_USER_MAPPING
- CREATE_VIEW
- DELETE
- DROP_DATABASE
- DROP_EXTENSION
- DROP_EXTERNAL_TABLE
- DROP_FOREIGN_DATA_WRAPPER
- DROP_FOREIGN_TABLE
- DROP_FUNCTION
- DROP_INDEX
- DROP_RESOURCE_GROUP
- DROP_RESOURCE_QUEUE
- DROP_ROLE
- DROP_RULE
- DROP_SCHEMA
- DROP_SEGMENT_SET
- DROP_SEQUENCE
- DROP_SERVER
- DROP_TABLE
- DROP_TABLESPACE
- DROP_TYPE
- DROP_USER_MAPPING
- DROP_VIEW
- END
- EXPLAIN
- GRANT
- INSERT
- LOAD
- LOCK
- REINDEX
- RELEASE_SAVEPOINT
- RESET
- REVOKE
- ROLLBACK_TO_SAVEPOINT
- ROLLBACK
- SAVEPOINT
- SELECT INTO
- SET ROLE
- SET TRANSACTION
- SET
- SHOW
- START TRANSACTION
- TRUNCATE
- UPDATE
- VACUUM
CREATE SEGMENT_SET
创建数据节点集合。
概要
CREATE SEGMENT_SET name SEGMENTS (content_id, ...);
描述
Segment Set 指的是集群中的数据节点集合,即特定的一组数据节点。定义了具体的数据节点集合后,在建表或者修改表定义的数据库定义语言(DDL)语句中,可以指定创建过的数据节点集合,使得表的数据仅分布在这些数据节点上,否则会默认分布在集群里所有节点。
两个不同的数据节点集合可以包含相同的某个或多个数据节点。
CREATE SEGMENT_SET 命令在数据库级别创建一个特定的数据节点集合,数据节点集合和表之间不存在依赖关系。
参数
NAME
- 数据节点集合的名称,有一个特殊的保留数据节点集合名称 'ALL_SEGMENTS' 不能被使用,它代表当前集群规模下的所有数据节点,随着集群扩容,'ALL_SEGMENTS' 指向的数据节点列表会有不同。
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 标准中没有节点集合概念。