在金仓数据库中,数据库实例初始化的时候会创建一个目录,通常都会在系统配置相关的环境变量$KINGBASEDATA来表示。当数据库初始化完成后,会在这个目录生成相关的子目录以及一些文件。下图就是金仓数据库的物理结构:
数据文件用于存储数据,文件名以oid命名。对于超出1G的数据文件,金仓数据库会自动将其拆分为多个文件来存储,而拆分的文件名将由sys_class中的relfilenode字段来决定。
| 点击这里查看视频讲解:【赵渝强老师】金仓数据库的数据文件 |
通过下面的步骤可以确定表所对应的数据文件。
(1)查看数据库的OID。
sql
kingbase=# select oid,datname from sys_database;
# 输出的信息如下:
oid | datname
-------+-----------
14791 | test
14792 | kingbase
1 | template1
14790 | template0
14793 | security
16384 | scott
(6 行记录)
# 14792 是数据库kingbase的OID。
(2)查询testtable1表的OID。
sql
kingbase=# select oid,relname,relkind,relfilenode from sys_class
where relname ='testtable1';
# 输出的信息如下:
oid | relname | relkind | relfilenode
-------+------------+---------+-------------
16428 | testtable1 | r | 16428
(1 行记录)
# 16428 是表testtable1的OID。
(3)查看表空间mydemotbs对应的目录,如下图所示。