#ALTER TABLESPACE SET

# 通用描述

ALTER TABLESPACE SET语句用于更改分布式部署中一个已存在的表空间集的相关属性。

表空间集是YashanDB分布式部署中的一个逻辑存储单位,用于存储分布表及与分布表相关数据信息,物理上对应了各DN节点上的数据文件。

# 语句定义

alter tablespace set::=

syntax
ALTER TABLESPACE SET tablespace_set_name MAXSIZE size_clause NEXT size_clause RESIZE size_clause

# tablespace_set_name

表空间集的名称。目前只能指定为users,即YashanDB内置的USERS表空间集

# maxsize size_clause

该语句用于修改表空间集的最大可扩展空间,不能小于原有的最大可扩展空间。

size_clause的取值范围为[128 * DB_BLOCK_SIZE, CHUNK_NUM * MAX_SPACE_FILES * DATAFILE_MAXSIZE],当DB_BLOCK_SIZE参数为默认的8K值时,该范围为[1M, CHUNK_NUM * 32T]。

其中,CHUNK_NUM为表空间集的chunk数量,YashanDB中的chunk数量等于DN组的数量。

MAX_SPACE_FILES为表空间集允许的最大文件数量,MAX_SPACE_FILES = 64。

DATAFILE_MAXSIZE为每个数据文件的最大可扩展空间,DATAFILE_MAXSIZE = 512G。

增加表空间集的最大可扩展空间会相应地增加所有DN组上的数据文件的最大可扩展空间:

  1. 所有数据文件的最大可扩展空间之和构成了表空间集的最大可扩展空间。
  2. 当增加表空间集的最大可扩展空间时,系统将新的最大空间均分给每个DN组,每个DN组先将已有的文件的最大值扩展到最大,然后继续建立新的文件。
  3. 新建立的数据文件初始大小默认为1M ,除最后一个文件外的其它文件的最大可扩展空间为最大值。
  4. 表空间集在每个DN组上最多有一个文件的最大可扩展空间不是最大值 。

示例

--查看当前USERS表空间集的maxsize=512G*2*3=3072G
SELECT group_id||'-'||group_node_id dn_node,
SPLIT(name,'/',-1) filename,
TS#,BYTES,RELATIVE_FNO,AUTO_EXTEND,NEXT_SIZE,MAX_SIZE 
FROM DV$DATAFILE
WHERE TS#=7
ORDER BY 3,1,2;

DN_NODE   FILENAME                     TS#       BYTES RELATIVE_FNO AUTO_EXTEND    NEXT_SIZE       MAX_SIZE 
--------- -------------------------- ----- ----------- ------------ ----------- ------------ -------------- 
3-1       tss-1800-chunk-0-file-0        7    68157440            0 ON              67108864   549755813888
3-1       tss-1800-chunk-0-file-1        7     1048576            1 ON              67108864   549755813888
4-1       tss-1800-chunk-1-file-0        7     1048576            0 ON              67108864   549755813888
4-1       tss-1800-chunk-1-file-1        7     1048576            1 ON              67108864   549755813888
5-1       tss-1800-chunk-2-file-0        7     1048576            0 ON              67108864   549755813888
5-1       tss-1800-chunk-2-file-1        7     1048576            1 ON              67108864   549755813888

--将USERS表空间集的maxsize扩大一倍
ALTER TABLESPACE SET users MAXSIZE 6144G;

--每个DN节点上均创建了两个数据文件
SELECT group_id||'-'||group_node_id dn_node,
SPLIT(name,'/',-1) filename,
TS#,BYTES,RELATIVE_FNO,AUTO_EXTEND,NEXT_SIZE,MAX_SIZE 
FROM DV$DATAFILE
WHERE TS#=7
ORDER BY 3,1,2;

DN_NODE   FILENAME                     TS#       BYTES RELATIVE_FNO AUTO_EXTEND    NEXT_SIZE       MAX_SIZE 
--------- -------------------------- ----- ----------- ------------ ----------- ------------ -------------- 
3-1       tss-1800-chunk-0-file-0        7    68157440            0 ON              67108864   549755813888
3-1       tss-1800-chunk-0-file-1        7     1048576            1 ON              67108864   549755813888
3-1       tss-1800-chunk-0-file-2        7     1048576            2 ON              67108864   549755813888
3-1       tss-1800-chunk-0-file-3        7     1048576            3 ON              67108864   549755813888
4-1       tss-1800-chunk-1-file-0        7     1048576            0 ON              67108864   549755813888
4-1       tss-1800-chunk-1-file-1        7     1048576            1 ON              67108864   549755813888
4-1       tss-1800-chunk-1-file-2        7     1048576            2 ON              67108864   549755813888
4-1       tss-1800-chunk-1-file-3        7     1048576            3 ON              67108864   549755813888
5-1       tss-1800-chunk-2-file-0        7     1048576            0 ON              67108864   549755813888
5-1       tss-1800-chunk-2-file-1        7     1048576            1 ON              67108864   549755813888
5-1       tss-1800-chunk-2-file-2        7     1048576            2 ON              67108864   549755813888
5-1       tss-1800-chunk-2-file-3        7     1048576            3 ON              67108864   549755813888

# next size_clause

该语句用于修改表空间集内部的数据文件每次自动扩展的大小。

size_clause的取值范围为[512 * DB_BLOCK_SIZE, 32768 * DB_BLOCK_SIZE],当DB_BLOCK_SIZE参数为默认的8K值时,该范围为[4M,256M]。

示例

--接上例
ALTER TABLESPACE SET users NEXT 100M;

--查询修改后的数据文件信息
SELECT group_id||'-'||group_node_id dn_node,
SPLIT(name,'/',-1) filename,
TS#,BYTES,RELATIVE_FNO,AUTO_EXTEND,NEXT_SIZE,MAX_SIZE 
FROM DV$DATAFILE
WHERE TS#=7
ORDER BY 3,1,2;
DN_NODE   FILENAME                     TS#      BYTES RELATIVE_FNO AUTO_EXTEND   NEXT_SIZE       MAX_SIZE 
--------- -------------------------- ----- ---------- ------------ ----------- ----------- -------------- 
3-1       tss-1800-chunk-0-file-0        7   68157440            0 ON            104857600   549755813888
3-1       tss-1800-chunk-0-file-1        7    1048576            1 ON            104857600   549755813888
3-1       tss-1800-chunk-0-file-2        7    1048576            2 ON            104857600   549755813888
3-1       tss-1800-chunk-0-file-3        7    1048576            3 ON            104857600   549755813888
4-1       tss-1800-chunk-1-file-0        7    1048576            0 ON            104857600   549755813888
4-1       tss-1800-chunk-1-file-1        7    1048576            1 ON            104857600   549755813888
4-1       tss-1800-chunk-1-file-2        7    1048576            2 ON            104857600   549755813888
4-1       tss-1800-chunk-1-file-3        7    1048576            3 ON            104857600   549755813888
5-1       tss-1800-chunk-2-file-0        7    1048576            0 ON            104857600   549755813888
5-1       tss-1800-chunk-2-file-1        7    1048576            1 ON            104857600   549755813888
5-1       tss-1800-chunk-2-file-2        7    1048576            2 ON            104857600   549755813888
5-1       tss-1800-chunk-2-file-3        7    1048576            3 ON            104857600   549755813888
																				

# resize size_clause

该语句用于修改表空间集数据文件的大小。

size_clause的取值范围为[128 * DB_BLOCK_SIZE, MAXSIZE],MAXSIZE表示当前表空间集的最大可扩展空间,当DB_BLOCK_SIZE参数为默认的8K时,最小值为1M。

当用户设置的size小于当前实际大小时,将不会进行修改。

--接上例
ALTER TABLESPACE SET users RESIZE 300M;

--查询修改后的数据文件信息
SELECT group_id||'-'||group_node_id dn_node,
SPLIT(name,'/',-1) filename,
TS#,BYTES,RELATIVE_FNO,AUTO_EXTEND,NEXT_SIZE,MAX_SIZE 
FROM DV$DATAFILE
WHERE TS#=7
ORDER BY 3,1,2;
DN_NODE   FILENAME                     TS#      BYTES RELATIVE_FNO AUTO_EXTEND   NEXT_SIZE       MAX_SIZE 
--------- -------------------------- ----- ---------- ------------ ----------- ----------- -------------- 
3-1       tss-1800-chunk-0-file-0        7  104857600            0 ON            104857600   549755813888
3-1       tss-1800-chunk-0-file-1        7    1048576            1 ON            104857600   549755813888
3-1       tss-1800-chunk-0-file-2        7    1048576            2 ON            104857600   549755813888
3-1       tss-1800-chunk-0-file-3        7    1048576            3 ON            104857600   549755813888
4-1       tss-1800-chunk-1-file-0        7  104857600            0 ON            104857600   549755813888
4-1       tss-1800-chunk-1-file-1        7    1048576            1 ON            104857600   549755813888
4-1       tss-1800-chunk-1-file-2        7    1048576            2 ON            104857600   549755813888
4-1       tss-1800-chunk-1-file-3        7    1048576            3 ON            104857600   549755813888
5-1       tss-1800-chunk-2-file-0        7  104857600            0 ON            104857600   549755813888
5-1       tss-1800-chunk-2-file-1        7    1048576            1 ON            104857600   549755813888
5-1       tss-1800-chunk-2-file-2        7    1048576            2 ON            104857600   549755813888
5-1       tss-1800-chunk-2-file-3        7    1048576            3 ON            104857600   549755813888