1、表空间的概念

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

2、表空间的作用

通过使用表空间,管理员可以控制一个KingbaseES安装的磁盘布局。

  • 如果初始化集簇所在的分区或者卷用光了空间,而又不能在逻辑上扩展或者做别的什么操作,那么表空间可以被创建在一个不同的分区上,直到系统可以被重新配置。
  • 表空间允许管理员根据数据库对象的使用模式来优化性能。例如,一个很频繁使用的索引可以被放在非常快并且非常可靠的磁盘上,如一种非常贵的固态设备。同时,一个很少使用的或者对性能要求不高的存储归档数据的表可以存储在一个便宜但比较慢的磁盘系统上。

用一句话来讲:能合理利用磁盘性能和空间,制定最优的物理存储方式来管理数据库表和索引。

3、表空间跟数据库的关系

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

4、系统默认表空间

表空间sys_default是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$KINGBASE_HOME/data/base/

表空间sys_global用来存放系统字典表;对应存储目录$KINGBASE_HOME/data /global/

列出现有的表空间:


  1. test=# \db
  2.           表空间列表
  3.     名称     | 拥有者 | 所在地
  4. -------------+--------+--------
  5.  sys_default | system |
  6.  sys_global  | system |
  7.  sysaudit    | system |
  8. (3 行记录)
  9. test=# select oid,* from sys_tablespace;
  10.  oid  | oid  |   spcname   | spcowner | spcacl | spcoptions
  11. ------+------+-------------+----------+--------+------------
  12.  1663 | 1663 | sys_default |       10 |        |
  13.  1664 | 1664 | sys_global  |       10 |        |
  14.  1986 | 1986 | sysaudit    |       10 |        |
  15. (3 行记录)

5、创建表空间

语法:


  1. CREATE TABLESPACE tablespace_name
  2. [ OWNER { new_owner | CURRENT_USER | SESSION_USER } ]
  3. LOCATION 'directory'
  4. [ ONLINE | OFFLINE ]
  5. [ WITH ( tablespace_option = value [, ... ] ) ]

C5023版本也可支持oracle的语法(未设计功能,只做语法兼容):  


  1. CREATE [ SMALLFILE ] TABLESPACE tablespace_name
  2.     [ DATAFILE  file_specification [ , file_specification ...]

其中 file_specification 是:


  1. {
  2.   [ 'filename' ]
  3.   [ SIZE  { filesize [ K | M | G | T | P | E ] } ]
  4.   [ REUSE ]
  5.   [ AUTOEXTEND  { ON [ NEXT { filesize [ K | M | G | T | P | E ] }
  6.                       [ MAXSIZE { UNLIMITED | { filesize [ K | M | G | T |
  7.                       P | E ] } } ]
  8.                   | OFF
  9.                 }
  10.   ]
  11. }

示例如下:

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

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

兼容Oracle语法:(V008R006C005B0023版本)


  1. test=# CREATE TABLESPACE tsp01 LOCATION '/home/kbc5/mytbs' ONLINE;
  2. CREATE TABLESPACE

6、权限分配

表空间的创建本身必须作为一个数据库超级用户完成,但在创建完之后之后你可以允许普通数据库用户来使用它.要这样做,给数据库普通用户授予表空间上的CREATE权限。表、索引和整个数据库都可以被分配到特定的表空间.

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


  1. test=# \c test tuser
  2. You are now connected to database "test" as user "tuser".
  3. test=> create table test_tsp(id int) tablespace tsp01;
  4. ERROR:  permission denied for tablespace tsp01
  5. test=> \c test system
  6. You are now connected to database "test" as user "system".
  7. test=# GRANT CREATE ON TABLESPACE tsp01 TO tuser;
  8. GRANT
  9. test=# \c test tuser
  10. You are now connected to database "test" as user "tuser".
  11. test=> create table test_tsp(id int) tablespace tsp01;
  12. CREATE TABLE

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

语法:

ALTER DATABASE name SET TABLESPACE new_tablespace

以数据库test为例:

ALTER DATABASE test SET TABLESPACE tsp01;

注意1:执行该操作;不能连着对应数据库操作


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

注意2:执行该操作;新的表空间内不能有对象存在


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

注意3:执行该操作;必须是没有人连着对应的数据库


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

断开其他连接后:


  1. test1=# ALTER DATABASE test SET TABLESPACE tsp01;
  2. 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)

8、临时表空间

KingbaseES的临时表空间,通过参数temp_tablespaces进行配置,KingbaseES允许用户配置多个临时表空间。配置多个临时表空间时,使用逗号隔开。如果没有配置temp_tablespaces 参数,临时表空间对应的是默认的表空间sys_default。

KingbaseES的临时表空间用来存储临时表或临时表的索引,以及执行SQL时可能产生的临时文件例如排序,聚合,哈希等。为了提高性能,一般建议将临时表空间放在SSD或者IOPS,以及吞吐量较高的分区中。


  1. $ mkdir -p /opt/Kingbase/ES/V8/mytemptbs
  2. $ chown -R kingbase: kingbase /opt/Kingbase/ES/V8/mytemptbs
  3. test=# CREATE TABLESPACE temp01 LOCATION '/opt/Kingbase/ES/V8/mytemptbs';
  4. CREATE TABLESPACE
  5. test=# show temp_tablespaces ;
  6.  temp_tablespaces
  7. ------------------
  8. (1 row)

设置临时表空间

会话级生效


  1. test=# set temp_tablespaces = 'temp01';
  2. SET

永久生效

修改参数文件kingbase.conf

重载配置


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

查看临时表空间


  1. test=# show temp_tablespaces ;
  2.  temp_tablespaces
  3. ------------------
  4.  temp01
  5. (1 row)
文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树首页概览59714 人正在系统学习中

[转帖]金仓数据库KingbaseES表空间介绍的更多相关文章

  1. 通过ODBC接口访问人大金仓数据库

      国产化软件和国产化芯片的窘境一样,一方面市场已经存在性能优越的同类软件,成本很低,但小众的国产化软件不仅需要高价买入版权,并且软件开发维护成本高:另一方面,国产软件目前普遍难用,性能不稳定,Bug ...

  2. QT 之 ODBC连接人大金仓数据库

    QT 之 使用 ODBC 驱动连接人大金仓数据库 获取数据库驱动和依赖动态库 此操作可在人大金仓官网下载与系统匹配的接口动态库,或者从架构数据库的源码中获取驱动和依赖动态库 分别为: 驱动动态库:kd ...

  3. Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间

    Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一:  删除user drop ...

  4. ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库,表空间,数据文件

    ORACLE RMAN备份及还原   RMAN能够进行增量备份:数据库.表空间.数据文件 仅仅有使用过的block能够被备份成backup set 表空间与数据文件相应关系:dba_data_file ...

  5. orale数据库.实例.表空间.用户.表

    近期因为工作原因接触到Oracle数据库.了解到Oracle和mysql的结构上还是有很大的区别的. Oracle数据库---实例---表空间---用户---表 我们将从这5个方面来了解Oracle ...

  6. Oracle数据库查看表空间sql语句

    转: Oracle数据库查看表空间sql语句 2018-09-03 15:49:51 兰海泽 阅读数 6212   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...

  7. 通过jmeter连接人大金仓数据库

    某项目用的人大金仓数据库,做性能测试,需要用jmeter来连接数据库处理一批数据.jmeter连接人大金仓,做个记录. 1. 概要 在"配置元件"中添加"JDBC Con ...

  8. KingbaseES 表空间加密-透明加密

    透明存储加密是指数据在写到磁盘上时对其进行加密,当授权用户重新读取数据时再对其进行解密.加密解密过程对用户都是透明的,无需对应用程序进行修改,授权用户甚至不会注意到数据已经在存储介质上加密.当前的透明 ...

  9. db2实例、数据库、表空间

    创建数据数据库之前必须创建实例,数据库是运行在实例之上的.实例在本质上是由一些后台进程和共享内存组成.实例相当于是数据库的一个容器,可以包含多个数据库,但是一个数据库只能由一个实例进行管理.相当于Wi ...

  10. linux下的oracle数据库和表空间的导入导出

    由于oracle是安装在linux上面,因此需要oracle的导入导出都是使用命令进行操作.oracle允许整个数据库导入导出和表空间的导入导出. 数据库导入导出 以下操作是在操作系统控制台命令中执行 ...

随机推荐

  1. Typora+Docsify快速入门

    Typora是什么? ​ Typora中文版是一款好用极简的跨平台Markdown编辑器,软件使用这款软件能够帮助用户轻松将文本转换到HTML,软件从底层向上设计,软件支持markdown的标准语法, ...

  2. 最基本的SpringCloud的搭建

    对于springcloud而言,模块是按业务进行区分的: 父工程 依赖 <parent> <groupId>org.springframework.boot</group ...

  3. 手把手带你写Node.JS版本小游戏

    摘要:今天就利用Node.JS为大家带来简单有趣的的剪刀石头布的小游戏. JavaScript的出现催动了前端开发的萌芽,前后端分离促进了Vue.React等开发框架的发展,Weex.React-Na ...

  4. 云图说 | MSSI之应用业务模型ABM,搭建业务与技术的数据治理桥梁

    摘要:应用业务模型ABM(Application Business Model)是MSSI为客户提供的统一模型管理服务. 本文分享自华为云社区<[云图说] | 第274期 MSSI之应用业务模型 ...

  5. 开发老人笔记:Git 常用命令清单

    摘要:git是目前世界上最先进的分布式版本控制系统. 多人协作 master:此分支用来发布稳定的代码,合并一般是由管理员合并 dev:此分支用于团队开发,团队成员向此分支提交代码 bug:此分支用于 ...

  6. 互联网短平快下,DevCloud如何支撑软件开发的“转型”?

    摘要:2013年踏入互联网浪潮的张浩,在8年的软件开发中,一一经历了这三段"历史进程",感受到技术迭代更新背后的魅力. 互联网改变人们的衣食住行,也在悄然无声间为根植之上的软件行业 ...

  7. 知道Python中的字符串是什么吗?

    摘要:本文将告诉您Python中的字符串是什么,并向您简要介绍有关该概念的所有知识. 本文将介绍以下内容: 如何创建一个字符串? 如何从字符串访问字符? 格式化字符串 因此,让我们开始吧. 什么是Py ...

  8. 宝藏昇腾AI应用推荐!CANN带你体验黑白图像自动上色的快乐~

    摘要:属于"你"那边的麦田 天空 河水 骏马 树木--会是什么颜色呢? 黑白与色彩 似乎把时代分割了两半~ 我在这头看见了错乱繁华,琳琅满目,看见快速消长的色彩缤纷. 翻开一张黑白 ...

  9. web内容如何保护:如何有效地保护 HTML5 格式的视频内容?

    文章资料还没有整理完,现在还不通顺,但是可以做笔记看 HTML是用于创建web页面和web应用程序的公开标准的标记语言.HTML文件基本上是纯文本文件,这意味着软件应用程序和普通人可以轻松地创建.读取 ...

  10. DarkMode(4):css滤镜 颜色反转实现深色模式

    在<DarkMode(1):产品应用深色模式分析>提过,单纯反转是不行的.但是,把不需要反转的,在反转过来.或者用js,给想要反转的,加上反转样式,再对其他的做微调.这样个人觉得,开发成本 ...