[转帖]金仓数据库KingbaseES表空间(tablespace)知多少
金仓数据库KingbaseES表空间定义
金仓数据库KingbaseES中的表空间允许在文件系统里定义那些代表数据库对象的文件存放位置,比如表和索引等。一旦表空间被创建,那么就可以在创建数据库对象时通过名称来引用他。
一个数据库可以有一个或多个表空间,创建数据库时自动创建系统表空间sys_default,作为缺省的默认表空间。一个表空间只能属于一个数据库,只有创建了数据库之后才能创建属于该数据库的表空间。
表空间优缺点
通过使用表空间,数据库管理员可以控制一个KingbaseES数据库安装的磁盘布局。
这么做至少有两个用处。
第一,如果初始化集簇所在的磁盘分区或者卷用光了,而又不能在逻辑上对磁盘进行扩展,那么可以在其他不同的磁盘分区上创建表空间,直到系统可以被重新配置。
第二,表空间允许数据库管理员根据数据库对象的使用模式来优化性能。例如,一个很频繁使用的索引可以被放在非常快并且非常可靠的磁盘上,如一种非常贵的固态设备。同时,一个很少使用的或者对性能要求不高的存储归档数据的表可以存储在一个便宜但比较慢的磁盘系统上。
缺点是即便是位于主要的KingbaseES数据目录之外,表空间也是数据库集簇的一部分并且不能被视作数据文件的一个自治集合。它们依赖于包含在主数据目录中的元数据,并且因此不能被附加到一个不同的数据库集簇或者单独备份。类似地,如果丢失一个表空间(文件删除、磁盘失效等), 数据库集簇可能会变成不可读或者无法启动。把一个表空间放在一个临时文件系统 (如一个内存虚拟盘)上会给整个集簇带来可靠性的风险。
总体来说表空间在某些特殊情况下是非常好用的,特别是磁盘空间不够的情况下来部署数据库。
备份表空间
如果对具有表空间的数据库执行文件系统备份,则必须备份所有表空间,不能备份或恢复单个表空间。
表空间使用方法总结
数据库创建时会自动创建sys_default和sys_global默认表空间,这两个表空间分别存储在数据路径下的base和global目录,而用户自己创建的表空间则存储在数据路径下的sys_tblspc目录,其实是一个软连接,连接到真正的表空间存储空间。
- 创建表空间目录:在新的分区创建一个新的目录,注意不能是KingbaseES数据库的主目录内。创建的目录隶属于KingbaseES的操作系统系统用户。确切地说,该用户必须具有更改目录权限的权限。所有后续在该表空间中创建的对象都将被存放在这个目录下的文件中。该位置不能放在可移动或者临时存储上,因为如果表空间丢失会导致整个集簇无法工作。表、索引和整个数据库都可以被分配到特定的表空间。
- 创建表空间:
CREATE TABLESPACE newtblsp LOCATION '/tmp/newtblsp'; - 在newtblsp表空间上创建表
:- CREATE TABLE tab (
- id integer NOT NULL,
- val text NOT NULL
- ) TABLESPACE newtblsp;
- 在newtblsp表空间创建索引,注意如果不指定表空间,索引会创建在默认系统表空间,而不是和表在一起的表空间:
CREATE INDEX tab_val_idx ON tab (val) TABLESPACE newtblsp;
- 更改表的表空间:
- ALTER TABLE tab
- ADD CONSTRAINT tab_pkey PRIMARY KEY (id)
- USING INDEX TABLESPACE newtblsp;
- 在表空间创建数据库:在该数据库中创建的所有对象都将自动放置在数据库的表空间中。
CREATE DATABASE newdb TABLESPACE newtblsp; - 更改表空间定义和参数
:- ALTER TABLESPACE oldtblsp RENAME TO newtblsp;
- ALTER TABLESPACE newtblsp OWNER TO { new_owner | CURRENT_USER | SESSION_USER };
- ALTER TABLESPACE newtblsp SET ( tablespace_option = value [, ... ] )
- ALTER TABLESPACE newtblsp RESET ( tablespace_option [, ... ] )
- 要删除一个空的表空间,使用命令:
DROP TABLESPACE newtblsp; - 表空间限额管理:可以对指定表空间的大小进行限额,一旦超过该限额,对表空间中数据的insert,update,copy to,select into,create index等操作将会终止或者警告。
- SELECT spcname,oid FROM sys_tablespace;
- SELECT set_space_quato(oid, quota);
将在旧的表空间数据移动到新的表空间:
- --将旧表空间中的数据移动到新的表空间
- alter table all in tablespace old_tblspc set tablespace new_tblspc;
- --将旧表空间中的索引移动到新的表空间
- alter index all in tablespace old_tblspc set tablespace new_tblspc;
11. 数据库迁移到新机器后,如何修改表空间(此方法非官方推荐方法,可以在测试机测试使用):
需要在数据库目录下的sys_tblspc目录下,重新建立软符号链接到真正的表空间地址,重新启动数据库即可。
符号链接命令: ln -s /data0/tpch_tblspc 16388
【更多人大金仓数据库信息,详见https://help.kingbase.com.cn/】
[转帖]金仓数据库KingbaseES表空间(tablespace)知多少的更多相关文章
- 通过ODBC接口访问人大金仓数据库
国产化软件和国产化芯片的窘境一样,一方面市场已经存在性能优越的同类软件,成本很低,但小众的国产化软件不仅需要高价买入版权,并且软件开发维护成本高:另一方面,国产软件目前普遍难用,性能不稳定,Bug ...
- QT 之 ODBC连接人大金仓数据库
QT 之 使用 ODBC 驱动连接人大金仓数据库 获取数据库驱动和依赖动态库 此操作可在人大金仓官网下载与系统匹配的接口动态库,或者从架构数据库的源码中获取驱动和依赖动态库 分别为: 驱动动态库:kd ...
- Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间
Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一: 删除user drop ...
- ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库,表空间,数据文件
ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库.表空间.数据文件 仅仅有使用过的block能够被备份成backup set 表空间与数据文件相应关系:dba_data_file ...
- orale数据库.实例.表空间.用户.表
近期因为工作原因接触到Oracle数据库.了解到Oracle和mysql的结构上还是有很大的区别的. Oracle数据库---实例---表空间---用户---表 我们将从这5个方面来了解Oracle ...
- Oracle数据库查看表空间sql语句
转: Oracle数据库查看表空间sql语句 2018-09-03 15:49:51 兰海泽 阅读数 6212 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
- 通过jmeter连接人大金仓数据库
某项目用的人大金仓数据库,做性能测试,需要用jmeter来连接数据库处理一批数据.jmeter连接人大金仓,做个记录. 1. 概要 在"配置元件"中添加"JDBC Con ...
- 表空间tablespace,数据文件datafiles,和控制文件control files介绍
https://docs.oracle.com/cd/B19306_01/server.102/b14220/physical.htm#i5919 本文系翻译 表空间tablespace,数据文件da ...
- oracle表空间tablespace
用户:用户是在实例下建立的.不同实例可以建相同名字的用户. 表空间:表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个 ...
- KingbaseES 表空间加密-透明加密
透明存储加密是指数据在写到磁盘上时对其进行加密,当授权用户重新读取数据时再对其进行解密.加密解密过程对用户都是透明的,无需对应用程序进行修改,授权用户甚至不会注意到数据已经在存储介质上加密.当前的透明 ...
随机推荐
- 如何开发一个ORM数据库框架
如何开发一个ORM框架 ORM(Object Relational Mapping)对象关系映射,ORM的数据库框架有hibernate,mybatis.我该如何开发一个类似这样的框架呢? 为什么会有 ...
- Mysql在sql中截取时间类型字段的年月日和时间
DATE_FORMAT() 函数 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 下面的脚本使用 DATE_FORMAT() 函数来显示不同的格式.我们使用 NOW() 来获得当 ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 15.创建持续效果BUFF
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应Lecture 18 – Creating Buffs, World Interaction, 71 ...
- C++通过文件指针获取文件大小
目录 1. 叙述 2. 结论 1. 叙述 对于读取本地文件,很多时候需要预先知道本地文件的大小在进行读取.网上给出的方案是移动文件指针,计算文件头和文件尾的偏移,计算出文件的大小.但是我总觉得这样做可 ...
- Spire.Cloud 在线协同编辑Word文档
协同编辑,即项目管理者在用户管理系统下,允许多人(用户)同时编辑同一Word/Excel/PPT 文档.Spire.Cloud支持的协同编辑模式包含两种: 1. 快速模式:其他编辑者可以及时看到对文档 ...
- GaussDB(DWS)集群中寻找节点CPU占用高的语句
摘要:本文主要通过实例讲解如何通过gs_cpuwatcher.sh 脚本寻找CPU占用高语句. 本文分享自华为云社区<GaussDB(DWS) gs_cpuwatcher.sh 脚本如何寻找CP ...
- 解读登录双因子认证(MFA)特性背后的TOTP原理
摘要:随着互联网密码泄露事件频发,越来越多的产品开始支持多因子认证(MFA),TOTP则是MFA领域里最普遍的一种实现方式,本文介绍TOTP的原理和华为云的实践经验. 原理 TOTP(Time-Bas ...
- Linux 升级安装 Python 3
百度飞桨 PaddlePaddle 2.4.0 => Python 3.7.4 PaddlePaddle 2.4.1+ => Python 3.9.0 下载 # 安装依赖 [root@lo ...
- 【软件安装记录篇】本地虚拟机Centos7快速安装MySQL
安装 采用Installing MySQL on Linux Using the MySQL Yum Repository的方式进行安装. 1. 首先下载服务器版本对应的rpm文件,下载地址:[链接] ...
- 记一次go应用在k8s pod已用内存告警不准确分析
版权说明: 本文章版权归本人及博客园共同所有,转载请在文章前标明原文出处( https://www.cnblogs.com/mikevictor07/p/17968696.html ),以下内容为个人 ...