基本概念
表空间是允许在文件系统中定义用来存放表示数据库对象的文件的位置,给表指定一个存储目录。
初始系统表空间:
-
sys_default:存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间,对应存储目录$KINGBASE_HOME/data/base/
-
sys_global:存放系统字典表,对应存储目录$KINGBASE_HOME/data /global/
表空间说明
-
一个表空间可以让多个数据库使用;而一个数据库可以使用多个表空间。属于"多对多"的关系。
-
表空间由数据库超级用户创建
-
给数据库普通用户授予表空间上的CREATE权限,可以允许普通数据库用户来使用它
-
表、索引和整个数据库都可以被分配到特定的表空间
-
数据库变更默认表空间时,数据库对象随之迁移(变更数据库默认表空间时注意提前确认原库数据量及目标空间大小)
临时表空间
- 通过参数temp_tablespaces进行配置,未配置是值为空,默认临时表空间为sys_default
- 允许用户配置多个临时表空间,配置多个临时表空间时,使用逗号隔开
- 临时表空间用来存储临时表或临时表的索引,执行SQL时可能产生的临时文件例如排序,聚合,哈希等
- 建议将临时表空间放在SSD或者IOPS,以及吞吐量较高的分区中
-
常用命令
-- 查看表空间信息
\db 或\db+
\db[+] [tablespace_name]
SELECT oid,spcname,spcowner FROM sys_tablespace;
-- 查看数据库的默认表空间信息
\l+
-- 创建表空间
mkdir -p /dir01
chown -R kingbase:kingbase /dir01
chmod -R 700 /dir01 -- 必须是一个已有的空目录,且位置不应该位于数据目录内
ls -ld /dir01
\db -- 检查表空间
CREATE TABLESPACE <tbs_name> LOCATION '/dir01'; -- 数据库创建逻辑表空间,关联目录
CREATE TABLESPACE <tbs_name> OWNER <user_name> LOCATION '/dir01'; -- 创建表空间并指定属主
-- 修改表空间
-- 修改表空间属主
ALTER TABLESPACE <tbs_name> OWNER TO <user_name>;
-- 修改表空间名
ALTER TABLESPACE <old_tbs_name> RENAME TO <new_tbs_name>;
-- 修改数据库db01默认表空间为tbs10
/*******************************************
修改数据库默认表空间的条件:
1. 不能连着对应数据库操作
2. 新的表空间内不能有对象存在
3. 必须是没有人连着对应的数据库
********************************************/
ALTER DATABASE <db_name> SET TABLESPACE <tbs_name>;
-- 移动表t01到表空间tbs10中
ALTER TABLE <table_name> SET TABLESPACE <tbs_name>;
-- 删除表空间
DROP TABLESPACE <tbs_name>; -- 非空时不能被删除
-- 解除数据库与表空间的关联
ALTER DATABASE <db_name> SET TABLESPACE sys_default;
-- 表空间只读
ALTER TABLESPACE <tbs_name> READ ONLY;
-- 表空间可读写
ALTER TABLESPACE <tbs_name> READ WRITE;
-- 表空间脱机
ALTER TABLESPACE <tbs_name> OFFLINE;
-- 表空间联机
ALTER TABLESPACE <tbs_name> ONLINE;
-- 赋权表空间在普通用户create权限
GRANT CREATE ON TABLESPACE <tbs_name> TO <user_name>;
-- 回收表空间在普通用户create权限
revoke create on tablespace <tbs_name> from <user_name>;
-- 创建临时表空间
mkdir -p /opt/Kingbase/ES/V8/mytemptbs
chown -R kingbase: kingbase /opt/Kingbase/ES/V8/mytemptbs
chmod 700 /opt/Kingbase/ES/V8/mytemptbs
CREATE TABLESPACE <temp_tbs_name> LOCATION '/opt/Kingbase/ES/V8/mytemptbs';
-- 会话级设置临时表空间
set temp_tablespaces = '<temp_tbs_name>';
-- 永久设置临时表空间生效
vi kingbase.conf
temp_tablespaces = '<temp_tbs_name>' # a list of tablespace names, '' uses
-- 重载配置
sys_ctl reload
最后修改时间:2023-12-26 20:01:40
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




