• 表空间的概念

    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 V8R3集群运维案例之---用户自定义表空间管理

    ​案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...

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

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

  3. Oracle 表空间和用户权限管理

    一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻 ...

  4. Oracle:一个用户操作多个表空间中表的问题(转)

    原文地址:http://blog.csdn.net/shmiloy001/article/details/6287317 首先,授权给指定用户. 一个用户的默认表空间只能有一个,但是你可以试下用下面的 ...

  5. Oracle创建表空间

    1.创建表空间 导出Oracle数据的指令:/orcl file=C:\jds.dmp owner=jds 导入Oracle数据的指令:imp zcl:/orcl file=C:\jds.dmp fu ...

  6. Oracle使用SQL传输表空间

    源环境:RHEL 6.4 + Oracle 11.2.0.4 目的环境:RHEL 6.4 + Oracle 11.2.0.4 DG双机 要求:使用SQL传输表空间DBS_D_JINGYU从源环境到目的 ...

  7. Oracle架构设计01:表空间的管理维护规范

    Oracle数据库的表空间管理可以说是非常简单和基础的一项维护工作,但是越简单的事情就越要制定统一的规范,这样数据库的各项管理工作才会愈加的简单高效. 那么接下来,问题来了.. Q1:当我们接手一个新 ...

  8. (总结)Oracle 11g常用管理命令(用户、表空间、权限)

    1.启动oracle数据库: 从root切换到oracle用户进入:su - oracle 进入sqlplus环境,nolog参数表示不登录:sqlplus /nolog 以管理员模式登录:sqlpl ...

  9. Oracle学习笔记八 表空间

    表空间 表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 .   分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下 ...

随机推荐

  1. sql-关键词的大小写与注释

    是否区分大小写 和 注释 大小写 oracle 自带的sqlplus: mysql 客户端 : Navicat: 注释 oracle 自带的sqlplus: mysql 客户端 : 小节 oracle ...

  2. windows server2012R2 上 .net core IIS 部署--应用程序池 自动停止

    在windows server2016安装部署.NET CORE时,只需要将.net core应用程序池设置无托管,然后对应你项目的版本安装一个dotnet-hosting-2.2.6-win.exe ...

  3. REST 表现层状态转化

    1.REST是什么? 1) REST:即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展 ...

  4. docker容器数据管理

    Docker容器数据卷 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume). 数据卷可以用来存储Docker应用的数据,也可以用来在Docke ...

  5. 启用Hyper-v后,重启后界面提示 无法完成功能配置,正在撤销更改

    安装docker后,提示需要启用hyper-v,在控制面板中勾选Hyper-v,然后重启,更新快完成就提示无法完成功能配置,正在撤销更改 解决方法 方法1 控制面板一个一个选 方法2 百度了n多内容, ...

  6. VirtualBox 相关命令行

    简介 由于之前项目有一个需求,则是自动化创建虚拟机并加载相关配置,创建虚拟机无法避免对于虚拟机系统的设置,因此采用导入虚拟机的方式,并通过查阅virtualbox相关手册,知晓virtualbox可以 ...

  7. mysql查询版本

    系统环境下 :mysql -V; mysql内:select version();

  8. python3.7爬虫:使用Selenium带Cookie登录并且模拟进行表单上传文件

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_142 前文再续,书接上一回,之前一篇文章我们尝试用百度api智能识别在线验证码进行模拟登录:Python3.7爬虫:实时api(百 ...

  9. 把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_202 "表达欲"是人类成长史上的强大"源动力",恩格斯早就直截了当地指出,处在蒙昧时代即低 ...

  10. 一文带你弄懂 CDN 技术的原理

    对于 CDN 这个东西,相信大家都有耳闻,感觉既陌生但又熟悉.最近深入了解了一下 CDN,这才发现原来 CDN 如此重要!今天就跟大家科普一下 CDN 是什么,以及为啥要有 CDN,最后再讲一下 CD ...