#ALTER TABLESPACE SET
# 通用描述
ALTER TABLESPACE SET语句用于更改分布式部署中一个已存在的表空间集的相关属性。
表空间集是YashanDB分布式部署中的一个逻辑存储单位,用于存储分布表及与分布表相关数据信息,物理上对应了各DN节点上的数据文件。
目前只能指定修改非内存映射表空间集。
Note:
本文出现的所有CHUNK_NUM,均表示当前分布式部署环境中的Chunk总数量,该值可由建库参数USERS_DATASPACE_SCALE_OUT_FACTOR * 当前DN组个数计算得到结果,其中,建库参数USERS_DATASPACE_SCALE_OUT_FACTOR在安装过程中配置且后续不可修改,可咨询数据库管理员获得该参数的值。
# 语句定义
alter tablespace set::=
# tablespace_set_name
表空间集的名称。
# maxsize size_clause
该语句用于修改表空间集的最大可扩展空间,不能小于原有的最大可扩展空间。
size_clause的取值范围为[128 * DB_BLOCK_SIZE * CHUNK_NUM, 4G * DB_BLOCK_SIZE * CHUNK_NUM],当DB_BLOCK_SIZE参数为默认的8K值时,该范围为[1M * CHUNK_NUM, 32T * CHUNK_NUM]。
增加表空间集的最大可扩展空间会相应地增加所有DN组上的数据文件的最大可扩展空间:
- 所有数据文件的最大可扩展空间之和构成了表空间集的最大可扩展空间。
- 当增加表空间集的最大可扩展空间时,系统将新的最大空间均分给每个DN组,每个DN组先将已有的文件的最大值扩展到最大,然后继续建立新的文件。
- 新建立的数据文件初始大小默认为1M ,除最后一个文件外的其它文件的最大可扩展空间为最大值。
- 表空间集在每个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 * CHUNK_NUM, MAXSIZE],MAXSIZE表示当前表空间集的最大可扩展空间,当DB_BLOCK_SIZE参数为默认的8K时,最小值为1M * CHUNK_NUM。
当用户设置的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
# databucket_clause
该语句用于修改表空间集中的bucket(数据桶)信息。
# add_databucket_clause
该语句用于增加bucket,可同时挂载多个,以,分隔。对于新建bucket的描述与约束与CREATE TABLESPACE SET章节中databucket_clause语句相同。
# bucket_clause
同CREATE TABLESPACE SET章节中bucket_clause语句描述。
# s3_bucket_clause
同CREATE TABLESPACE SET章节中s3_bucket_clause语句描述。
示例
ALTER TABLESPACE SET tbs_tb ADD DATABUCKET '?/lscfile3' MAXSIZE 1G;
# alter_databucket_clause
该语句用于修改bucket的读写属性,创建的bucket均默认为可读写属性。
# bucket_name
对于不同的Databucket类型,bucket_name具有不同的含义:
对于本地存储的bucket,bucket_name为bucket在本地文件系统的绝对路径或相对路径。
对于S3 bucket,bucket_name为逻辑名称,用于在数据库内查询具体的bucket信息。
# readonly|readwrite
readonly表示只读,readwrite表示可读写。
示例
ALTER TABLESPACE SET tbs_tb ALTER DATABUCKET '?/lscfile3' READONLY;
# drop_databucket_clause
该语句用于删除bucket,每次只允许指定一个bucket删除。
# bucket_name
同alter_databucket_clause语句描述。
示例
ALTER TABLESPACE SET tbs_tb DROP DATABUCKET '?/lscfile3';