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. Istio 为服务指定协议

    1.背景 Istio 默认支持代理所有 TCP 流量.包括 HTTP.HTTPS.gRPC 以及原始 TCP 协议.但为了提供额外的能力,比如路由和丰富的指标,必须确定协议.协议可以被自动检测或者手动 ...

  2. JavaScript异步编程3——Promise的链式使用

    目录 概述 详论 1️⃣回调地狱 2️⃣Promise实现 参考 概述 在上一篇文章<JavaScript异步编程2--结合XMLHttpRequest使用Promise>中,简要介绍了A ...

  3. KubeCon China 2023 | 拥抱开源,华为云原生华彩绽放

    本文分享自华为云社区<KubeCon China 2023 | 拥抱开源,华为云原生华彩绽放>,作者: 云容器大未来 . 2023 年度云原生全球旗舰盛会 KubeCon + CloudN ...

  4. KubeEdge和Kuiper“双剑合并”,轻松解决边缘流式数据处理

    摘要:KubeEdge 是一个开源的边缘计算平台,它在Kubernetes原生的容器编排和调度能力之上,扩展实现了 云边协同.计算下沉.海量边缘设备管理.边缘自治等能力.KubeEdge还将通过插件的 ...

  5. CIO们开始将软件供应链升级为安全优先级top

    开源之所以在软件开发中大量使用的原因是它提供了经过良好测试的构建块,可以加速复杂应用程序和服务的创建.但是第三方软件组件以及包和容器的便利性同时也带来了风险--软件供应链攻击. 软件供应链攻击日益普遍 ...

  6. 火山引擎 DataTester 智能发布平台:智能化 A/B 实验,助力产品快速迭代

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在互联网竞争炙热的红海时代,精益开发高效迭代越来越成为成为产品竞争的利器.产品迭代过程中,如何保障高效的功能迭代安 ...

  7. 高性能 Jsonpath 框架,Snack3 v3.2.44 发布

    Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计.其下一切数据都以ONode表示,ONode也 ...

  8. Docker 安装 ELK,EFK代替

    ELK 版本因为 前面 Elasticsearch 用的 7.9.3 版本,所以 kibana-7.9.3.logstash-7.9.3 都用 7.9.3 版本 安装配置 Elasticsearch ...

  9. 断点续传(上传)Java版

    PostMan 客户端调用部分见,断点续传(上传)C#版 1. 客户每次上传前先获取一下当前文件已经被服务器接受了多少 2. 上传时设定偏移量,跳过服务器已收到的长度 @SpringBootTest ...

  10. 如何在 Unity 游戏中集成 AI 语音识别?

    简介 语音识别是一项将语音转换为文本的技术,想象一下它如何在游戏中发挥作用?发出命令操纵控制面板或者游戏角色.直接与 NPC 对话.提升交互性等等,都有可能.本文将介绍如何使用 Hugging Fac ...