KingbaseESV8R6表空间与数据库,模式,表的关系
自定义表空间的作用
使用多个表空间可以更灵活地执行数据库操作。当数据库具有多个表空间时,您可以:
1、将用户数据与系统表数据分开存储在不同性能的存储上,以减少I/O争用。
2、将一个应用程序的数据与另一个应用程序的数据分开,以防止在必须使表空间脱机时多个应用程序受到影响。
3、将不同表空间的数据文件存储在不同的磁盘驱动器上,以减少I/O争用。
4、使单个表空间脱机,而其他表空间保持联机状态,从而提供更好的整体可用性。
5、方便备份单个表空间。
表空间与数据库,schema,表的逻辑对应关系
表空间是实际存储数据的地方,一个schema对应多个表空间,一个表空间也可以对应多个schema。
我们可以创建数据库时候指定表空间和owner。这说明表空间的逻辑存储架构是在数据库和schema之上的,他们是包含的关系。
一个表空间可以存储多个数据库,稍后在表空间目录结构中我们可以看出他们之间的关系。
创建完数据库后,也可以通过ALTER DATABASE name SET TABLESPACE new_tablespace 语法更改数据库指定默认表空间为自定义表空间。
\l+ 可以查看数据库对应的表空间名。操作系统上自定义表空间目录的物理结构也可以看出其关系,进入自定义表空间目录,对应的是数据库目录,进入数据库目录对应的是表的relfilenode。
如下,ttspace是自定义表空间。
TEST=# \db
List of tablespaces
Name | Owner | Location
-------------+--------+--------------------------
sys_default | system |
sys_global | system |
sysaudit | system |
ttspace | system | /home/kingbase7/tbl_user
(4 rows)
如下,tbl_user是表空间目录,12145是数据库oid,进入数据库目录,里面存储的数据库对象是表的relfilenode。
[kingbase7@localhost ~]$ cd tbl_user/
[kingbase7@localhost tbl_user]$ cd SYS_12_202209081/
[kingbase7@localhost SYS_12_202209081]$ ll
total 0
drwx------ 2 kingbase7 kingbase7 126 Aug 16 16:47 12145
[kingbase7@localhost SYS_12_202209081]$ cd 12145/
[kingbase7@localhost 12145]$ ll
total 136
-rw------- 1 kingbase7 kingbase7 73728 Aug 16 16:27 109295
-rw------- 1 kingbase7 kingbase7 24576 Aug 16 16:27 109295_fsm
-rw------- 1 kingbase7 kingbase7 0 Aug 16 16:27 109296
-rw------- 1 kingbase7 kingbase7 8192 Aug 16 16:27 109297
-rw------- 1 kingbase7 kingbase7 8192 Aug 16 16:44 109298
-rw------- 1 kingbase7 kingbase7 0 Aug 16 16:44 109299
-rw------- 1 kingbase7 kingbase7 8192 Aug 16 16:44 109300
-rw------- 1 kingbase7 kingbase7 8192 Aug 16 16:47 109301
-rw------- 1 kingbase7 kingbase7 8192 Jul 14 15:19 92835
更改表的默认表空间为自定义表空间
alter table 语法
ALTER TABLE ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
SET TABLESPACE new_tablespace [ NOWAIT ]
TEST=# select * from sys_tablespace ;
oid | spcname | spcowner | spcacl | spcoptions
-------+-------------+----------+--------+----------------------------------------------
1663 | sys_default | 10 | |
1664 | sys_global | 10 | |
1986 | sysaudit | 10 | |
27158 | ttspace | 10 | | {quota=100,current_size=393262,space_full=1}
(4 rows)
如下,第一次修改表ti为指定表空间ttspace,从sys_class视图里看出原始的relfilenode59987并没有删除,59987位于base目录下的默认表空间里,而是在自定义表空间目录下新建了一个relfilenode109295。两个对象同名。
TEST=# alter table ti set tablespace ttspace;
ALTER TABLE
TEST=# select * from sys_class where relname='ti';
oid | relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | relhasindex | relisshared | relpersistence |
relkind | relnatts | relchecks | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecurity | relispopulated | relreplident | relispartition | relrewrite | relfrozenxid | relminmx
id | relacl | reloptions | relpartbound
-------+---------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+----------------+-
--------+----------+-----------+-------------+----------------+----------------+----------------+---------------------+----------------+--------------+----------------+------------+--------------+---------
---+--------+------------+--------------
59987 | ti | 59985 | 59989 | 0 | 59986 | 2 | 59987 | 0 | 0 | 0 | 0 | 59995 | f | f | p |
r | 2 | 0 | f | f | f | f | f | t | d | f | 0 | 1959 |
1 | | |
68231 | ti | 2200 | 68233 | 0 | 10 | 2 | 109295 | 27158 | 9 | 2006 | 0 | 68234 | f | f | p |
r | 2 | 0 | f | f | f | f | f | t | d | f | 0 | 2032 |
1 | | |
(2 rows)
第二次修改表t为指定表空间ttspace,sys_class里这次原始的表的relfilenode被删除了,只保留了自定义表空间下的relfilenode。可见,alter table set tablespace后,表的relfilenode发生变化,变成了109301,它对应的表空间oid 从原来的0变为27158,而原来默认表空间对应的base目录下的relfilenode68270也被自动删除。
TEST=# select * from sys_class where relname='t';
oid | relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | relhasindex | relisshared | relpersistence |
relkind | relnatts | relchecks | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecurity | relispopulated | relreplident | relispartition | relrewrite | relfrozenxid | relminmx
id | relacl | reloptions | relpartbound
-------+---------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+----------------+-
--------+----------+-----------+-------------+----------------+----------------+----------------+---------------------+----------------+--------------+----------------+------------+--------------+---------
---+--------+------------+--------------
68270 | t | 2200 | 68272 | 0 | 10 | 2 | 68270 | 0 | 1 | 3 | 0 | 0 | f | f | p |
r | 3 | 0 | f | f | f | f | f | t | d | f | 0 | 2039 |
1 | | |
(1 row)
TEST=# alter table t set tablespace ttspace;
ALTER TABLE
TEST=# select * from sys_class where relname='t';
oid | relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | relhasindex | relisshared | relpersistence |
relkind | relnatts | relchecks | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecurity | relispopulated | relreplident | relispartition | relrewrite | relfrozenxid | relminmx
id | relacl | reloptions | relpartbound
-------+---------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+----------------+-
--------+----------+-----------+-------------+----------------+----------------+----------------+---------------------+----------------+--------------+----------------+------------+--------------+---------
---+--------+------------+--------------
68270 | t | 2200 | 68272 | 0 | 10 | 2 | 109301 | 27158 | 1 | 3 | 0 | 0 | f | f | p |
r | 3 | 0 | f | f | f | f | f | t | d | f | 0 | 2039 |
1 | | |
(1 row)
如下从表空间oid 27158的目录结构可以理解为,表空间架构包含于数据库oid12145,进入下一层目录是数据库下的表对象等。
[kingbase7@localhost 12145]$ pwd
/home/kingbase7/data/sys_tblspc/27158/SYS_12_202209081/12145
表空间链接文件指向自定义表空间目录地址。
lrwxrwxrwx 1 kingbase7 kingbase7 24 May 5 17:36 27158 -> /home/kingbase7/tbl_user
[kingbase7@localhost sys_tblspc]$ pwd
/home/kingbase7/data/sys_tblspc
KingbaseESV8R6表空间与数据库,模式,表的关系的更多相关文章
- PostgreSQL表空间、数据库、模式、表、用户/角色之间的关系
看PostgreSQL9的官方文档,我越看越迷糊,这表空间,数据库,模式,表,用户,角色之间的关系怎么在PostgreSQL里这么混乱呢?经过中午的一个小实验,我逐渐理清了个中来龙去脉.下面我来还原我 ...
- 转://RMAN跨平台可传输表空间和数据库
参考链接: http://blog.itpub.net/23135684/viewspace-776048/ http://blog.sina.com.cn/s/blog_69e7b8d7010164 ...
- oracle数据库表空间追加数据库文件方法
oracle数据库表空间追加数据库文件方法 针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G 第一种方式:表空间增加数据文件 www.2cto.com 1 ...
- Oracle - 数据库的实例、表空间、用户、表之间关系
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...
- 【转】Oracle - 数据库的实例、表空间、用户、表之间关系
[转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机 ...
- Oracle sql语句创建表空间、数据库、用户及授权
--创建表空间和数据库文件及默认表空间大小 create tablespace TableSpace_Test datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\O ...
- [20170623]利用传输表空间恢复数据库2.txt
[20170623]利用传输表空间恢复数据库2.txt --//继续上午的测试,测试truncate,是否可行,理论讲应该没有问题.我主要的目的测试是否要切换日志.--//参考链接 : http:// ...
- oracle下的数据库实例、表空间、用户及其表的区分
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...
- Oracle学习笔记—数据库,实例,表空间,用户、表之间的关系
之前一直使用的关系型数据库是Mysql,而新公司使用Oracle,所以最近从网上搜集了一些资料,整理到这里,如果有不对的地方,欢迎大家讨论. 基本概念: 数据库:Oracle 数据库是数据的物理存储. ...
- [转]Oracle - 数据库的实例、表空间、用户、表之间关系
本文转自:http://www.cnblogs.com/adforce/p/3312252.html 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物 ...
随机推荐
- 使用JS实现博客搜索关键字高亮
说明 最近博客添加了搜索功能,有个需求是要针对搜索结果中搜索关键字需要高亮显示. 以便用户可以更快速的挑选自己中意的文章. 原理就是在渲染列表数据中给含有关键字的文本标签添加自定义class,渲染完毕 ...
- [攻防世界][Web]ics-06
打开靶机对应的url,展开是一个网站的样子,其实啥也么有 所有tab都点一遍,发现只有报表中心有内容,url为 http://61.147.171.105:49797/index.php?id=1 猜 ...
- OpenCV开发笔记(六十六):红胖子8分钟带你总结形态学操作-膨胀、腐蚀、开运算、闭运算、梯度、顶帽、黑帽(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- Elasticsearch-Mapping(映射)
Elasticsearch-Mapping(映射) Mapping是用来定义一个文档(document),以及它所包含的属性(field)是如何存储和 索引的. 哪些字符串属性应该被看做全文本属性(f ...
- 领略一下swift函数派发机制流程
函数派发 Swift中函数的派发机制有三种:静态派发,函数表派发,消息派发. 静态派发 静态派发是指在运行时不需要查表,直接跳转到方法进行执行.静态派发的性能也是最高的.c语言采用的是直接派发. 函数 ...
- 【Azure Function】Azure Function中使用 Java 8 的安全性问题
问题描述 使用Azure Function, 环境是Linux的Java8.目前 Oracle Java JDK8,11,17 和 OpenJDK 8/11/17 都在存在漏洞受影响版本的范围内. O ...
- stm32OLED多级菜单
今天实现了OLED多级菜单的显示.我用的是stm32f103ve,和四脚的OLED屏幕,用了三个按键. 话不多说,直接上代码. 点击查看代码 //先定义按键功能结构体 typedef struct { ...
- MySql学习之初识SQLyog
•SQLyog安装与配置 [安装包,提取码:w6sj] [安装教程,提取码:cwqu] •MySQL的语法规范 不区分大小写,但建议关键字大写,表名.列名小写 每条命令最好用分号结尾 每条命令根据需要 ...
- AutoNumber VsCode插件开发
AutoNumber VsCode插件开发 ::: details 目录 目录 AutoNumber VsCode插件开发 Step. 2: 安装脚手架 Step. 3: 创建空项目 Step. 4: ...
- DiagnosticSource DiagnosticListener 无侵入式分布式跟踪
ASP.NET Core 中的框架中发出大量诊断事件,包括当前请求进入请求完成事件,HttpClient发出收到与响应,EFCore查询等等. 我们可以利用DiagnosticListener来选择性 ...