[转帖]金仓数据库KingbaseES表空间(tablespace)知多少

数据库,kingbasees,空间,tablespace,知多少 · 浏览次数 : 0

小编点评

**金仓数据库KingbaseES表空间定义** 金仓数据库KingbaseES中的表空间是用于存储数据库对象的位置,包括表、索引等。创建表空间可以通过以下步骤实现: 1. 创建一个新的目录,并将其隶属KingbaseES的操作系统系统用户。 2. 在该目录下创建表空间目录。 3. 在该表空间目录下创建表、索引等对象。 4. 在该数据库中创建所有对象时,自动将它们放置在表空间中。 5. 可以对表空间进行限额管理,例如设置表空间的大小或限制对表空间中数据的写入等操作。 **表空间优缺点** **优点:** * 控制数据库安装的磁盘布局。 * 优化性能,例如放置经常使用的索引在快速和可靠的磁盘上。 * 降低数据库管理器的存储空间。 **缺点:** * 创建和删除表空间需要额外的操作。 * 只能将表空间放在与数据库数据所在的磁盘分区之外。 * 表空间是数据库集簇的一部分,不能独立备份。

正文

金仓数据库KingbaseES表空间定义

金仓数据库KingbaseES中的表空间允许在文件系统里定义那些代表数据库对象的文件存放位置,比如表和索引等。一旦表空间被创建,那么就可以在创建数据库对象时通过名称来引用他。

一个数据库可以有一个或多个表空间,创建数据库时自动创建系统表空间sys_default,作为缺省的默认表空间。一个表空间只能属于一个数据库,只有创建了数据库之后才能创建属于该数据库的表空间。

表空间优缺点

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

这么做至少有两个用处。

第一,如果初始化集簇所在的磁盘分区或者卷用光了,而又不能在逻辑上对磁盘进行扩展,那么可以在其他不同的磁盘分区上创建表空间,直到系统可以被重新配置。

第二,表空间允许数据库管理员根据数据库对象的使用模式来优化性能。例如,一个很频繁使用的索引可以被放在非常快并且非常可靠的磁盘上,如一种非常贵的固态设备。同时,一个很少使用的或者对性能要求不高的存储归档数据的表可以存储在一个便宜但比较慢的磁盘系统上。

缺点是即便是位于主要的KingbaseES数据目录之外,表空间也是数据库集簇的一部分并且不能被视作数据文件的一个自治集合。它们依赖于包含在主数据目录中的元数据,并且因此不能被附加到一个不同的数据库集簇或者单独备份。类似地,如果丢失一个表空间(文件删除、磁盘失效等), 数据库集簇可能会变成不可读或者无法启动。把一个表空间放在一个临时文件系统 (如一个内存虚拟盘)上会给整个集簇带来可靠性的风险。

总体来说表空间在某些特殊情况下是非常好用的,特别是磁盘空间不够的情况下来部署数据库。

备份表空间

如果对具有表空间的数据库执行文件系统备份,则必须备份所有表空间,不能备份或恢复单个表空间。

表空间使用方法总结

数据库创建时会自动创建sys_default和sys_global默认表空间,这两个表空间分别存储在数据路径下的base和global目录,而用户自己创建的表空间则存储在数据路径下的sys_tblspc目录,其实是一个软连接,连接到真正的表空间存储空间。

  1. 创建表空间目录:在新的分区创建一个新的目录,注意不能是KingbaseES数据库的主目录内。创建的目录隶属于KingbaseES的操作系统系统用户。确切地说,该用户必须具有更改目录权限的权限所有后续在该表空间中创建的对象都将被存放在这个目录下的文件中。该位置不能放在可移动或者临时存储上,因为如果表空间丢失会导致整个集簇无法工作。表、索引和整个数据库都可以被分配到特定的表空间。
  2. 创建表空间:
    CREATE TABLESPACE newtblsp LOCATION '/tmp/newtblsp';
  3. 在newtblsp表空间上创建表
    1. CREATE TABLE tab (
    2. id integer NOT NULL,
    3. val text NOT NULL
    4. ) TABLESPACE newtblsp;
  4. 在newtblsp表空间创建索引,注意如果不指定表空间,索引会创建在默认系统表空间,而不是和表在一起的表空间:
    CREATE INDEX tab_val_idx ON tab (val) TABLESPACE newtblsp;
    
  5. 更改表的表空间:
    1. ALTER TABLE tab
    2. ADD CONSTRAINT tab_pkey PRIMARY KEY (id)
    3. USING INDEX TABLESPACE newtblsp;
  6. 在表空间创建数据库:在该数据库中创建的所有对象都将自动放置在数据库的表空间中
    CREATE DATABASE newdb TABLESPACE newtblsp;
  7. 更改表空间定义和参数
    1. ALTER TABLESPACE oldtblsp RENAME TO newtblsp;
    2. ALTER TABLESPACE newtblsp OWNER TO { new_owner | CURRENT_USER | SESSION_USER };
    3. ALTER TABLESPACE newtblsp SET ( tablespace_option = value [, ... ] )
    4. ALTER TABLESPACE newtblsp RESET ( tablespace_option [, ... ] )
  8. 要删除一个空的表空间,使用命令:
    DROP TABLESPACE newtblsp;
  9. 表空间限额管理:可以对指定表空间的大小进行限额,一旦超过该限额,对表空间中数据的insert,update,copy to,select into,create index等操作将会终止或者警告。
    1. SELECT spcname,oid FROM sys_tablespace;
    2. SELECT set_space_quato(oid, quota);
  10.  将在旧的表空间数据移动到新的表空间:

    1. --将旧表空间中的数据移动到新的表空间
    2. alter table all in tablespace old_tblspc set tablespace new_tblspc;
    3. --将旧表空间中的索引移动到新的表空间
    4. 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/

文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树数据库组成61865 人正在系统学习中

与[转帖]金仓数据库KingbaseES表空间(tablespace)知多少相似的内容:

[转帖]金仓数据库KingbaseES表空间(tablespace)知多少

金仓数据库KingbaseES表空间定义 金仓数据库KingbaseES中的表空间允许在文件系统里定义那些代表数据库对象的文件存放位置,比如表和索引等。一旦表空间被创建,那么就可以在创建数据库对象时通过名称来引用他。 一个数据库可以有一个或多个表空间,创建数据库时自动创建系统表空间sys_defau

[转帖]金仓数据库KingbaseES表空间介绍

1、表空间的概念 KingbaseES中的表空间允许在文件系统中定义用来存放表示数据库对象的文件的位置。在KingbaseES中表空间实际上就是给表指定一个存储目录。 2、表空间的作用 通过使用表空间,管理员可以控制一个KingbaseES安装的磁盘布局。 如果初始化集簇所在的分区或者卷用光了空间,

[转帖]金仓数据库KingbaseES V8R6 索引膨胀

索引膨胀 对于索引,随着业务不断的增删改,会造成膨胀,尤其Btree索引,也会涉及索引分裂、合并等,导致索引访问效率降低、维护成本增加。另外,索引页的复用与HEAP PAGE不一样,因为索引的内容是有序结构,只有符合顺序的ITEM才能插入对应的PAGE中,不像HEAP TUPLE,只要有空间就可以插

[转帖]金仓数据库KingbaseES V8R6 中unlogged表

KingbaseESV8R6有一种表称为unlogged,在该表新建的索引也属于unlogged。和普通表的区别是,对该表进行DML操作时候不将该表的变更记录变更写入到wal文件中。在数据库异常关机或者异常崩溃后该表的数据会被truncate掉,但是在写入性能上会比普通表快几倍。 这个特性类似于or

[转帖]金仓数据库KingbaseES V8R6索引坏块故障处理

案例说明: 在执行表数据查询时,出现下图所示错误,索引故障导致表无法访问,后重建索引问题解决。本案例复现了此类故障解决过程。 适用版本: KingbaseES V8R3/R6 一、创建测试环境 # 表结构信息prod=# \d+ test1 Table "public.test1" Column|

[转帖]金仓数据库KingbaseES数据目录结构

KingbaseES数据库结构 [kingbase@postgresV8]$ tree -LP2data/.├── data│ ├── base # 存储用户创建的数据库文件及隶属于用户数据库的所有关系.比如表、索引...│ ├── current_logfiles. # 记录当前被日志收集器写入的

[转帖]金仓数据库KingbaseES 数据库参数优化

目录 一、数据库应用类型 二、主要参数 max_connections shared_buffers effective_cache_size maintenance_work_mem checkpoint_completion_target wal_buffers default_statisti

[转帖]金仓数据库KingbaseES误删除系统超级用户(superuser)权限的恢复方式

`https://blog.csdn.net/arthemis_14/article/details/129879269` 在使用KingbaseES数据库的时候,系统默认存在一个跟系统初始化用户同名的Superuser(默认是system用户,可更改)。 这个Superuser的存在其实对于权限的

[转帖]金仓数据库KingbaseES分区表 -- 声明式创建分区表

https://www.modb.pro/db/638045 1. 创建分区表同时创建分区 1.1 准备环境 # 创建分区表同时创建分区 create table tb1(id bigint,stat date,no bigint,pdate date,info varchar2(50)) part

[转帖]如何通过JMeter测试金仓数据库KingbaseES并搭建环境

1.安装JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具,主要用于对软件的压力测试,它最初被设计用于Web应用测试,但后来扩展到其它测试领域。它可测试静态、动态资源,如静态文件、Java小服务程序、CGI脚本、Java对象、数据库等等。JMeter可以用于对