首页 > 其他分享 >KingbaseES的表空间

KingbaseES的表空间

时间:2023-01-12 17:47:07浏览次数:53  
标签:tsp01 数据库 test tablespace 空间 TABLESPACE KingbaseES

1、表空间的概念

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

2、表空间的作用

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

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

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

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

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

4、系统默认表空间

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

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

 

列出现有的表空间:

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 行记录)

 

5、创建表空间

语法:

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

 

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

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

  

其中 file_specification 是:

    {
      [ 'filename' ]
      [ SIZE  { filesize [ K | M | G | T | P | E ] } ]
      [ REUSE ]
      [ AUTOEXTEND  { ON [ NEXT { filesize [ K | M | G | T | P | E ] }
                          [ MAXSIZE { UNLIMITED | { filesize [ K | M | G | T |
                          P | E ] } } ]
                      | OFF
                    }
      ]
    }

  

示例如下:

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

CREATE TABLESPACE

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

 兼容Oracle语法:(V008R006C005B0023版本)

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

  

6、权限分配

表空间的创建本身必须作为一个数据库超级用户完成,但在创建完之后之后你可以允许普通数据库用户来使用它.要这样做,给数据库普通用户授予表空间上的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

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

语法:

ALTER DATABASE name SET TABLESPACE new_tablespace

 

以数据库test为例:

ALTER DATABASE test SET TABLESPACE tsp01;

 

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

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

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

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:执行该操作;必须是没有人连着对应的数据库

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)

8、临时表空间

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

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)

  

 

标签:tsp01,数据库,test,tablespace,空间,TABLESPACE,KingbaseES
From: https://www.cnblogs.com/kingbase/p/15674971.html

相关文章

  • 线性基&线性空间 学习笔记
    Part1基础概念向量:一行的矩阵或一行的矩阵线性空间:由一组向量通过线性组合(相加和乘系数)能够表示的向量的集合。线性相关\(and\)线性无关:若一组向量中存在一个向量能......
  • 命令行部署KingbaseES流复制
    建立系统数据库安装用户组及用户,在所有的节点执行root用户登陆服务器,创建用户组及用户并且设置密码groupadd-g2000kingbaseuseradd-Gkingbase-g2000kingbase-m......
  • Oracle通过数据库链连接KingbaseES
    测试环境:ip数据库版本192.168.254.135oracle11g192.168.254.137V008R006C005B0023通过oracle官网得知,Oracle使用DG4ODBC作为连接到其他非Oracle数据库......
  • KingbaseES 等待事件之LWLock lock_manager
    背景相信我们不止一次遇到过一个等待事件:LWLocklock_manager。下面我们聊聊这个等待事件的含义,产生原因,以及解决方法。等待事件含义当数据库维护共享锁的内存区域以在......
  • 【Qt】记录WA_DeleteOnClose释放栈空间导致的程序异常崩溃问题
    背景项目中,有个需求是,父窗口关闭窗口时,子窗口也要同时关闭。我们通过设置属性Qt::WA_DeleteOnClose可以实现。//设置属性QWidget*widget=newQWidget();widget->s......
  • KingbaseES V8R3数据库运维案例之---不完整的启动包(incomplete startup packet)复现
    案例说明:在KingbaseESV8R3数据库的sys_log日志中,出现以下故障信息“不完整的启动包(incompletestartuppacket)”日志信息。本案例复现此日志信息发生的原因。如下图所示......
  • KingbaseES数据目录结构
    KingbaseES数据库结构[kingbase@postgresV8]$tree-LP2data/.├──data│  ├──base#存储用户创建的数据库文件及隶属于用户数据库......
  • KingbaseES 咨询锁
    传统的事务性锁,读/写会自动加锁,读/写完成后会自动解锁(加解锁机制在细节上复杂),这是一种隐式的锁机制。对于加锁后的并发控制,也就是默认的写不阻塞读,是通过MVCC机制解决的。......
  • KingbaseES V8R6运维案例之---普通表toast表故障修复
    案例说明:数据库在日常的维护过程中,在执行表查询(select),如下图所示,出现“couldnotreadblock0infile"base/16385/16408":readonly512of8192bytes”故障,通过对“......
  • KingbaseES date 数据类型的两种格式
    关于date数据类型,Oracle与PostgreSQL格式是不同的,Oracle是日期+时间的类型,而PG则只有日期。KingbaseESOracle模式则同时实现了二者类型,用户在使用时,需要注意所......