KingbaseES的表空间
表空间的概念
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的表空间的更多相关文章
- KingbaseES V8R3集群运维案例之---用户自定义表空间管理
案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...
- KingbaseES 表空间加密-透明加密
透明存储加密是指数据在写到磁盘上时对其进行加密,当授权用户重新读取数据时再对其进行解密.加密解密过程对用户都是透明的,无需对应用程序进行修改,授权用户甚至不会注意到数据已经在存储介质上加密.当前的透明 ...
- Oracle 表空间和用户权限管理
一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻 ...
- Oracle:一个用户操作多个表空间中表的问题(转)
原文地址:http://blog.csdn.net/shmiloy001/article/details/6287317 首先,授权给指定用户. 一个用户的默认表空间只能有一个,但是你可以试下用下面的 ...
- Oracle创建表空间
1.创建表空间 导出Oracle数据的指令:/orcl file=C:\jds.dmp owner=jds 导入Oracle数据的指令:imp zcl:/orcl file=C:\jds.dmp fu ...
- Oracle使用SQL传输表空间
源环境:RHEL 6.4 + Oracle 11.2.0.4 目的环境:RHEL 6.4 + Oracle 11.2.0.4 DG双机 要求:使用SQL传输表空间DBS_D_JINGYU从源环境到目的 ...
- Oracle架构设计01:表空间的管理维护规范
Oracle数据库的表空间管理可以说是非常简单和基础的一项维护工作,但是越简单的事情就越要制定统一的规范,这样数据库的各项管理工作才会愈加的简单高效. 那么接下来,问题来了.. Q1:当我们接手一个新 ...
- (总结)Oracle 11g常用管理命令(用户、表空间、权限)
1.启动oracle数据库: 从root切换到oracle用户进入:su - oracle 进入sqlplus环境,nolog参数表示不登录:sqlplus /nolog 以管理员模式登录:sqlpl ...
- Oracle学习笔记八 表空间
表空间 表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 . 分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下 ...
随机推荐
- python写个前端,这不是轻轻松松~
前端除了用js++css+html,还有没有其它办法?其实python也可以 1. 安装与基本流程 Python学习交流Q群:660193417### 安装 PyWebIO 和其他的第三方库一样使用p ...
- C#.NET笔试题-基础
1.C#中堆和栈的区别? 栈:由编译器自动分配.释放.在函数体中定义的变量通常在栈上. 堆:一般由程序员分配释放.用new.malloc等分配内存函数分配得到的就是在堆上. 存放在栈中时要管存储顺序, ...
- mysql实现两个字段合并成一个字段查询
[需求]实现国际化I18N语言切换功能,例如菜单列表.字典等. 主要是个辅助表进行管理语言的配置: 单个字段很简单,直接通过字典配置的数据标签(key)- 表名, 数据键值(value)-表字段名[默 ...
- MISC 2022/4/21 刷题记录-千字文
1.千字文 得到名为png的无类型文件,010 Editor查看,png,改后缀,得到二维码 QR扫描,得到一句话"这里只有二维码" 思路不对,binwalk一下,发现有错误信息 ...
- Redis 内存优化神技,小内存保存大数据
大家好,我是「码哥」,大家可以叫我靓仔. 这次码哥跟大家分享一些优化神技,当你面试或者工作中你遇到如下问题,那就使出今天学到的绝招,一招定乾坤! 如何用更少的内存保存更多的数据? 我们应该从 Redi ...
- HBase学习(二) 基本命令 Java api
一.Hbase shell 1.Region信息观察 创建表指定命名空间 在创建表的时候可以选择创建到bigdata17这个namespace中,如何实现呢? 使用这种格式即可:'命名空间名称:表名' ...
- 二叉排序树的合并(严3.98)--------西工大noj
二叉排序树的合并有三种方法 先存入数组,然后..... 直接在第二个树上添加第一个数的元素,时间复杂度为O(NlogN) 就像是合并数组一样合并二叉排序树,分别扫描,时间复杂度极低. 第三种我写了一下 ...
- Azure Devops(十四) 使用Azure的私有Nuget仓库
哈喽大家好,最近因为工作的原因没有时间写文章,断更了俩月,今天我们开始继续研究Azure上的功能. 今天我们开始研究一下Azure的制品仓库,在之前的流水线的相关文章中,我们都使用到了制品仓库用来保存 ...
- WPF 截图控件之绘制箭头(五)「仿微信」
前言 接着上周写的截图控件继续更新 绘制箭头. 1.WPF实现截屏「仿微信」 2.WPF 实现截屏控件之移动(二)「仿微信」 3.WPF 截图控件之伸缩(三) 「仿微信」 4.WPF 截图控件之绘制方 ...
- (一)、数字图像处理(DIP)
1.什么是图像? 图像是人类视觉的基础,是自然景物的客观事实,是人类认识世界和人类本身的重要源泉:也可以说图像是客观对象的一种表示. '图'是物体反射或透射光的分布:'像'是人的视觉系统所接受的图,在 ...