目录

表空间的概念

表空间的作用

表空间跟数据库的关系

系统默认表空间

创建表空间

权限分配

数据库设置新的默认表空间

临时表空间

表空间模式


表空间的概念

KingbaseES中的表空间允许在文件系统中定义用来存放表示数据库对象的文件的位置。实际上表空间就是给表指定一个存储目录。

表空间的作用

通过使用表空间,管理员可以控制一个KingbaseES数据库安装的磁盘布局。
这么做至少有两个用处:
1.如果初始化集簇所在的分区或者卷用光了空间,而又不能在逻辑上扩展或者做别的什么操作,那么表空间可以被创建在一个不同的分区上,直到系统可以被重新配置。
2.表空间允许管理员根据数据库对象的使用模式来优化性能。
例如,一个很频繁使用的索引可以被放在非常快并且非常可靠的磁盘上,如一种非常贵的固态设备。同时,一个很少使用的或者对性能要求不高的存储归档数据的表可以存储在一个便宜但比较慢的磁盘系统上。
用一句话来讲:能合理利用磁盘性能和空间,制定最优的物理存储方式来管理数据库表和索引。

表空间跟数据库的关系

在Oracle数据库中;一个表空间只属于一个数据库使用;而一个数据库可以拥有多个表空间。属于"一对多"的关系。
在KingbaseES集群中;一个表空间可以让多个数据库使用;而一个数据库可以使用多个表空间。属于"多对多"的关系。

系统默认表空间

表空间sys_default 用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$KINGBASE_HOME/data/base/
表空间sys_global 用来存放系统字典表;对应存储目录$KINGBASE_HOME/data/global/
表空间sysaudit 用来存放安全审计相关的数据。对应存储目录$KINGBASE_HOME/data/sys_aud

列出现有的表空间:

test=# \db
表空间列表
名称 | 拥有者 | 所在地
-------------+--------+----------------------
sys_default | system |
sys_global | system |
sysaudit | system |
(3 行记录)

test=# select oid,* from sys_tablespace;
oid | oid | spcname | spcowner | spcacl | spcoptions
------+------+-------------+----------+--------+------------
1663 | 1663 | sys_default | 10 | |
1664 | 1664 | sys_global | 10 | |
1986 | 1986 | sysaudit | 10 | |
(3 行记录)

创建表空间

语法:
CREATE TABLESPACE tablespace_name
[ OWNER { new_owner | CURRENT_USER | SESSION_USER } ]
LOCATION 'directory'
[ ONLINE | OFFLINE ]
[ WITH ( tablespace_option = value [, ... ] ) ]

示例如下:

test=# CREATE TABLESPACE tsp01 OWNER system LOCATION '/opt/Kingbase/ES/V8/mytbs';
CREATE TABLESPACE

目录"/opt/Kingbase/ES/V8/mytbs "必须是一个已有的空目录,并且属于数据库的操作系统用户

权限分配

表空间的创建必须由一个数据库超级用户完成,但在创建完之后可以允许普通数据库用户来使用它。
要达到这个目的需要给数据库普通用户授予表空间上的CREATE权限。

示例用户"tuser":为普通用户

test=# \c test tuser
You are now connected to database "test" as user "tuser".
test=> create table test_tsp(id int) tablespace tsp01;
ERROR: permission denied for tablespace tsp01
test=> \c test system
You are now connected to database "test" as user "system".
test=# GRANT CREATE ON TABLESPACE tsp01 TO tuser;
GRANT
test=# \c test tuser
You are now connected to database "test" as user "tuser".
test=> create table test_tsp(id int) tablespace tsp01;
CREATE TABLE

数据库设置新的默认表空间

语法:

ALTER DATABASE name SET TABLESPACE new_tablespace

以数据库test为例:

ALTER DATABASE test SET TABLESPACE tsp01;

注意1:不能对自己连接的数据库操作。如:以下连接着test,再对test 进行操作。

test=# ALTER DATABASE test SET TABLESPACE tsp01;
ERROR: cannot change the tablespace of the currently open database

注意2:执行该操作;新的表空间内不能有对象存在。如:数据库test 已有部分对象已在tsp01,则以下操作失败。

test1=# ALTER DATABASE test SET TABLESPACE tsp01;
ERROR: some relations of database "test" are already in tablespace "tsp01"
HINT: You must move them back to the database's default tablespace before using this command.

注意3:不能对已有连接的数据库进行操作。如:test 已有连接,则以下操作失败。

test1=# ALTER DATABASE test SET TABLESPACE tsp01;
ERROR: database "test" is being accessed by other users
DETAIL: There is 1 other session using the database.

断开其他连接后:

test1=# ALTER DATABASE test SET TABLESPACE tsp01;
ALTER DATABASE

查看数据库默认表空间:

test=# select d.datname,p.spcname from sys_database d, sys_tablespace p where d.datname='test' and p.oid = d.dattablespace;
datname | spcname
---------+---------
test | tsp01
(1 row)

临时表空间

KingbaseES的临时表空间,通过参数temp_tablespaces进行配置,KingbaseES允许用户配置多个临时表空间,配置多个临时表空间时,使用逗号隔开。
如果没有配置temp_tablespaces 参数,临时表空间对应的是默认的表空间sys_default。
KingbaseES的临时表空间用来存储临时表或临时表的索引,以及执行SQL时可能产生的临时文件例如排序,聚合,哈希等。
为了提高性能,一般建议将临时表空间放在SSD或者IOPS,以及吞吐量较高的分区中。

创建临时表空间

$ mkdir -p /opt/Kingbase/ES/V8/mytemptbs
$ chown -R kingbase: kingbase /opt/Kingbase/ES/V8/mytemptbs
ksql -U system -d test
test=# CREATE TABLESPACE temp01 LOCATION '/opt/Kingbase/ES/V8/mytemptbs';
CREATE TABLESPACE
test=# show temp_tablespaces ;
temp_tablespaces
+---------

(1 row)

设置临时表空间
会话级生效

test=# set temp_tablespaces = 'temp01';
SET

永久生效
修改参数文件kingbase.conf
重载配置

[kingbase@singlekbdb data]$ grep "temp_tablespace" kingbase.conf
temp_tablespaces = 'temp01' # a list of tablespace names, '' uses

查看临时表空间

test=# show temp_tablespaces ;
temp_tablespaces
+---------
temp01
(1 row)

表空间模式

Oracle表空间模式支持两类模式ONLINE/OFFLINE, READ WRITE/ONLY。
其中ONLINE模式表示表空间在线,具体能否写访问依赖于是READ WRITE模式还是READ ONLY,前者提供读写服务,后者提供只读服务。
如果是OFFLINE 模式的话表示表空间离线,那么将不能提供任何的服务。
目前KingbaseES也支持了上述的四种模式的设置,其设置方法兼容了Oracle 的语法。

KingbaseES为DBA用户提供了一个GUC参数skip_tablespace_check,该参数开启后DBA用户可以访问只读表空间对象、甚至是离线表空间对象。
注意:现阶段skip_tablespace_check参数默认开启,如需要使用表空间只读、离线功能,请关闭该参数。

test=# ALTER TABLESPACE tsp01 offline;
警告: tablespace mode switch from ONLINE READWRITE to OFFLINE READWRITE!
ALTER TABLESPACE
test=# ALTER TABLESPACE tsp01 online;
警告: tablespace mode switch from OFFLINE READWRITE to ONLINE READWRITE!
ALTER TABLESPACE
test=# ALTER TABLESPACE tsp01 READ ONLY;
警告: tablespace mode switch from ONLINE READWRITE to ONLINE READONLY!
ALTER TABLESPACE
test=# ALTER TABLESPACE tsp01 READ write;
警告: tablespace mode switch from ONLINE READONLY to ONLINE READWRITE!
ALTER TABLESPACE

另一种语法:

ALTER TABLESPACE tsp01 SET (READONLY_mode = TRUE); 只读
ALTER TABLESPACE tsp01 SET (READONLY_mode = FALSE); 读写
ALTER TABLESPACE tsp01 SET (online_mode = true); 在线
ALTER TABLESPACE tsp01 SET (online_mode = false); 离线

金仓数据库KingbaseES的表空间相关推荐

  1. 金仓数据库KingbaseES表空间(tablespace)知多少

    金仓数据库KingbaseES表空间定义 金仓数据库KingbaseES中的表空间允许在文件系统里定义那些代表数据库对象的文件存放位置,比如表和索引等.一旦表空间被创建,那么就可以在创建数据库对象时通 ...

  2. 金仓数据库KingbaseES行列转换

    概述 行列转换是在数据分析中经常用到的一项功能,金仓数据库KingbaseES从V8R6C3B0071版本开始通过扩展插件(kdb_utils_function)支持pivot和unpivot功能.在 ...

  3. 金仓数据库KingbaseES模式的使用

    ​ 关键字 Kingbase.模式 正文 金仓数据库KingbaseES模式使用注意事项: 多个用户使用同一个数据库而不会相互影响: 对数据库中的对象进行逻辑分组,更便于管理: 各个应用分别使用各自的 ...

  4. 解决金仓数据库KingbaseES创建serial列并将其设置为主键约束,同时copy两条及以上数据时报错的问题

    ​  关键字 人大金仓.金仓数据库.KingbaseES.KES.serial.copy.PRIMARY KEY 问题描述 使用KingbaseES V8R3数据库的客户端工具ksql执行copy - ...

  5. 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数

    关键字 pg_get_function_arg_default,regproc 问题描述 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数获取函数或 ...

  6. 金仓数据库KingbaseES序列的操作

    关键字 kingbase,序列 问题描述 如何操作金仓数据库KingbaseES序列? 解决方案 1.创建一个新的序列数发生器. 创建一个称作serial的上升序列,从 101 开始: CREATE ...

  7. 金仓数据库KingbaseES函数的管理

    关键字 kingbase,函数 问题描述 如何管理金仓数据库KingbaseES函数? 解决方案 a.创建一个函数 create or repalce function CREATE FUNCTION ...

  8. 金仓数据库KingbaseES ORACLE_FDW常见问题

    ​  1. OCIEnvCreate错误 错误信息:error:error connecting to Oracle: OCIEnvCreate failed to create environmen ...

  9. 如何在金仓数据库KingbaseES中指定IP登录

    关键字 KingbaseES,指定IP 问题描述 如何在金仓数据库KingbaseES中指定IP登录? 解决方案 1. 修改data目录下sys_hba.conf文件 2. 进行IP修改,重启服务,在 ...

最新文章

  1. jQuery设置样式 css
  2. KD树和LSH局部敏感哈希
  3. 学生电脑哪个牌子好_面包冷藏车哪个牌子好
  4. 304 vue 启动项目打开页面_Vue搭建项目工程(续)
  5. oracle索引建立
  6. 实现输入框小数多 自动进位展示,编辑时实际值不变
  7. python 字符串 4位一组_Python基础4- 字符串
  8. Activiti的流程定义文件解析
  9. 2022年G2电站锅炉司炉试题及在线模拟考试
  10. 每天二十分钟学习python_每天 3 分钟,小闫带你学 Python(二十三)
  11. Linux安装iptables防火墙
  12. C5750X7R2E105K230KA(电容器)MSP430F5249IRGCR微控制器资料
  13. cold diffusion的个人理解
  14. 微信公众号创建菜单报错40016
  15. 30行Python代码实现蚂蚁森林自动偷能量
  16. 数据分析真题日刷 | 网易2018校招数据分析师笔试卷
  17. docker安装报错Loading mirror speeds from cached hostfile解决方案
  18. 面向对象OO ALV添加按钮实现过程
  19. C语言中的void 和void 指针类型
  20. sw转urdf详细步骤

热门文章

  1. python3 模块大全_Python3 模块 | 菜鸟教程
  2. 计算机能进入系统但是桌面不动,电脑开机进入桌面后卡住不动
  3. win7系统快捷键大集合 这个最有感觉了~~:~~ 【Win+Tab】:3D切换窗口
  4. python京东自动签到_python实现自动登录 签到 京东 苏宁
  5. 著名演播艺术家艾宝良入驻讯飞阅读,人工智能助力声音传承
  6. 【工业机器人】两分钟读懂工业机器人的设计过程
  7. 难以怀瑾的测试规范遐想
  8. pc是指什么型号的计算机,pc_pc是什么意思-太平洋IT百科手机版
  9. Java期末考试试题及参考答案(06)
  10. MySQL事务的四种隔离界别以及会造成的问题和解决办法