#CREATE TABLESPACE SET
# 通用描述
CREATE TABLESPACE SET语句用于在分布式部署模式下创建一个新的表空间集。
表空间集是YashanDB分布式部署中的一个逻辑存储单位,用于存储分布表及与分布表相关数据信息,物理上对应了各DN节点上的数据文件。
Note:
本文出现的所有CHUNK_NUM,均表示当前分布式部署环境中的Chunk总数量,该值可由建库参数USERS_DATASPACE_SCALE_OUT_FACTOR * 建库时DN组个数计算得到结果,其中,建库参数USERS_DATASPACE_SCALE_OUT_FACTOR在安装过程中配置且后续不可修改,可咨询数据库管理员获得该参数的值。
在分布式部署中,执行本语句时系统会检查是否存在异常未恢复DDL语句,若存在将报错并需等待对应DDL恢复成功后才能执行本语句。
# 语句定义
create tablespace set::=
# tablespace_set_name
该语句用于指定要创建的表空间集的名称,不可省略,且需符合YashanDB的对象命名规范。
# databucket_clause
指定对象存储目录的路径信息,指定多个路径用,
分隔,每一个路径表示创建一个bucket(数据桶),可省略,省略则挂载至系统默认生成的bucket中,如不省略则不会默认生成bucket。
可通过查询DV$DATABUCKET视图查看当前系统中所有创建的bucket信息。
YashanDB中单个表空间集下允许挂载DataBucket数量的最大值为64,数据库中允许挂载Databucket数量的最大值取决于建库参数,可查看CREATE DATABASE章节中maxdatabuckets语句描述。
指定本语句后,不能再同时指定MEMORY MAPPED关键字。
# bucket_clause
该语句用于指定bucket信息,如路径,大小等。
YashanDB支持为表空间集创建本地存储bucket,本地存储bucket将数据存储至本地路径中。
# bucket_name
-对于本地存储的bucket,bucket_name为bucket在本地文件系统的相对路径,且系统将对指定的路径进行以下有效性判断:
- 允许指定一个不存在的目录,执行本语句将创建该目录。
- 允许指定一个已存在的目录,但该目录不能为已被其他bucket使用的路径。
- 系统对指定的目录必须拥有写权限。
- 分布式部署中不允许指定绝对路径。
- 对于S3 bucket,bucket_name为逻辑名称,用于在数据库内查询具体的bucket信息。
新创建的bucket名称不可与系统内置bucket重复,否则返回错误,可通过查看DV$DATABUCKET
视图查看当前系统中所有的bucket信息。
示例(分布式部署)
--如下语句将新建tbs_tb表空间集,同时分别于dn的$YASDB_DATA/local_fs和dbfiles目录下新建lsc_bucket1/lsc_bucket2这两个自定义的数据桶和chunk数个名称为TSS_OID_CHUNK_CHUNKID_FILE_ID的默认数据文件;
--且分别于mn/cn的$YASDB_DATA/local_fs和dbfiles目录下默认新建名称为TSS_OID_ROOT_DATABUCKET的根数据桶和名称为TSS_OID_ROOT_DATAFILE的根数据文件
CREATE TABLESPACE SET tbs_tb DATABUCKET '?/local_fs/lsc_bucket1','?/local_fs/lsc_bucket2' ON USERS MAXSIZE 8G;
# s3_bucket_clause
该语句用于指定S3 bucket的访问信息。
Note:
该功能默认无法使用,如需使用请联系我们的技术支持处理。
# url
用于指定访问地址,不可省略,最大值为1023字节。
# region
用于指定S3 bucket的物理所属区域,可省略,省略则默认使用对象存储服务的默认配置,最大值为127字节。
# access key
用于标识客户端身份,不可省略,最大值为127字节。
# secret key
访问密钥,不可省略,最大值为127字节。
# maxsize size_clause
用于指定bucket的大小,可省略,省略则默认为UNLIMITED。
示例(分布式部署)
--如下语句将新建s3_tablespace表空间并挂载S3 bucket
CREATE TABLESPACE SET s3_tablespace DATABUCKET 's3_bucket3' S3(URL '192.168.0.1:8000/s3bucket',ACCESS key 'ak',secret key 'sk') ON USERS MAXSIZE 8G;
# dataspace_name
该语句用于指定表空间集所属的数据空间,不可省略,目前仅支持的dataspace为users。
# memory mapped
当指定MEMORY MAPPED关键字时,表示所创建表空间集的文件的所有页面都将映射在内存中,YashanDB将此种类型的表空间集命名为内存映射表空间集。
内存映射表空间集支持在数据库启动时采用预加载方式,将表空间集中的数据全部加载到内存中,提高访问性能。
内存映射表空间集创建后无法修改属性。
# size size_clause
该语句用于指定内存映射表空间集预分配的大小,不可省略。
size_clause的取值范围为[128 * DB_BLOCK_SIZE * CHUNK_NUM, 4GB * DB_BLOCK_SIZE * CHUNK_NUM]。
示例(分布式部署)
CREATE TABLESPACE SET mm_tss
ON USERS
MEMORY MAPPED SIZE 8G;
# 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]。
# next size_clause
该语句用于指定表空间集包含的数据文件每次自动扩展的大小。
size_clause默认为8192 * DB_BLOCK_SIZE,用户设置时取值范围为[512 * DB_BLOCK_SIZE, 32768 * DB_BLOCK_SIZE],当DB_BLOCK_SIZE参数为默认的8K值时,该范围为[4M,256M]。
# size size_clause
该语句用于指定表空间集预分配的大小,可省略,省略则默认按照数据文件及bucket大小进行预分配。
size_clause的取值范围为[128 * DB_BLOCK_SIZE * CHUNK_NUM, MAXSIZE],MAXSIZE表示当前表空间集的最大可扩展空间,当DB_BLOCK_SIZE参数为默认的8K时,最小值为1M * CHUNK_NUM。
示例(分布式部署)
CREATE TABLESPACE SET tss1
ON USERS
MAXSIZE 8G SIZE 7G;