ALTER TABLESPACE SET语句用于更改分布式部署中一个已存在的表空间集的相关属性。
表空间集是YashanDB分布式部署中的一个逻辑存储单位,用于存储分布表及与分布表相关数据信息,物理上对应了各DN节点上的数据文件。
目前只能指定修改非内存映射表空间集。
在分布式部署中,执行本语句时系统会检查是否存在异常未恢复DDL语句,若存在将报错并需等待对应DDL恢复成功后才能执行本语句。
Note: 本文出现的所有CHUNK_NUM,均表示当前分布式部署环境中的Chunk总数量,该值可由建库参数USERS_DATASPACE_SCALE_OUT_FACTOR * 建库时DN组个数计算得到结果,其中,建库参数USERS_DATASPACE_SCALE_OUT_FACTOR在安装过程中配置且后续不可修改,可咨询数据库管理员获得该参数的值。
alter tablespace set::=
语法图
代码
syntax::= ALTER TABLESPACE SET tablespace_set_name (MAXSIZE size_clause | NEXT size_clause | RESIZE size_clause| databucket_clause)
语法图
代码
syntax::= add_databucket_clause | alter_databucket_clause | drop_databucket_clause
语法图
代码
syntax::= ADD DATABUCKET ((bucket_clause) {"," (bucket_clause)})
语法图
代码
syntax::= "'bucket_name'" [s3_bucket_clause] [MAXSIZE size_clause]
语法图
代码
syntax::= S3 "(" URL "'url'" ["," REGION "'region'"] "," ACCESS KEY "'access_key'" "," SECRET KEY "'secret_key'" ")"
语法图
代码
syntax::= ALTER DATABUCKET "'bucket_name'" (READONLY | READWRITE)
语法图
代码
syntax::= DROP DATABUCKET "'bucket_name'"
表空间集的名称。
该语句用于修改表空间集的最大可扩展空间,不能小于原有的最大可扩展空间。
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组上的数据文件的最大可扩展空间:
示例(分布式部署)
--查看当前USERS表空间集最大的max_size (TSS_2616为系统默认的users表空间标识符)
SELECT SUM(max_size) FROM DV$DATAFILE WHERE name LIKE '%/TSS_2616%_CHUNK_%' AND GROUP_ID > 2 AND GROUP_NODE_ID = 1;
SUM(MAX_SIZE)
-------------
2.3090E+13
--将USERS表空间集的maxsize扩大至22T
ALTER TABLESPACE SET users MAXSIZE 22T;
Copied!
该语句用于修改表空间集内部的数据文件每次自动扩展的大小。
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
Copied!
该语句用于修改表空间集数据文件的大小。
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
Copied!
该语句用于修改表空间集中的databucket(数据桶)信息。
该语句用于增加databucket,可同时挂载多个,以,
分隔。对于新建databucket的描述与约束与CREATE TABLESPACE SET章节中databucket_clause语句相同。
同CREATE TABLESPACE SET章节中bucket_clause语句描述。
同CREATE TABLESPACE SET章节中s3_bucket_clause语句描述。
示例(分布式部署)
ALTER TABLESPACE SET tbs_tb ADD DATABUCKET '?/lscfile3' MAXSIZE 1G;
Copied!
该语句用于修改databucket的读写属性,创建的databucket均默认为可读写属性。
对于不同的Databucket类型,bucket_name具有不同的含义:
readonly表示只读,readwrite表示可读写。
注意databucket修改为只读后不支持任何形式的写入操作,但用户执行的DML语句(非Bulkload操作)不受影响,执行Bulkload操作时由于需要生成SCOL数据,若表空间下没有可写入的databucket则会报错。
示例(分布式部署)
ALTER TABLESPACE SET tbs_tb ALTER DATABUCKET '?/lscfile3' READONLY;
Copied!
该语句用于删除databucket,每次只允许指定一个databucket删除。
同alter_databucket_clause语句描述。
示例(分布式部署)
ALTER TABLESPACE SET tbs_tb DROP DATABUCKET '?/lscfile3';
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。