您的位置:首页 > 数据库

HGDB查看数据库与表空间对应的物理文件

2017-12-12 17:34 417 查看
1.创建一个表空间:

su - highgo
mkdir -p /tmp/data/user_t
CREATE TABLESPACE tbls_t OWNER user_t LOCATION '/tmp/data/user_t';


在此之前应该确保目录/tmp/data/user_t有权限访问,并且目录为空。

2.创建一个数据库,指明该数据库的表空间是刚刚创建的user_t:

CREATE DATABASE db_t  TEMPLATE template1 OWNERE user_t TABLESPACE tbls_t;
或
CREATE DATABASE db_t  TABLESPACE tbls_t;


连接数据库

\c db_t user_t


db_t=# select pg_relation_filepath('pg_class'::regclass);
pg_relation_filepath
---------------------------------------------
pg_tblspc/57351/PG_9.5_201510051/57352/1259
(1 row)


注:pg_relation_filepath

Database Object Location Functions

it returns the entire file path name (relative to the database cluster’s data directory PGDATA) of the relation.

分解:

1) pg_tblspc/57351/PG_9.5_201510051/57352/1259

代表$PGDATA中的相对路径

2)57351—对应表空间oid

db_t=# select spcname from pg_tablespace where oid=57351;


spcname
---------
tbls_t
(1 row)


表空间的文件指向

4000

[highgo@hgdb01 pg_tblspc]$ cd /data/highgo/4.1.1/data/pg_tblspc
[highgo@hgdb01 pg_tblspc]$ ls -l
total 0
lrwxrwxrwx. 1 highgo highgo 16 Dec  8 17:33 57351 -> /tmp/data/user_t


3)57352—对应数据库的oid

db_t=# select oid,datname from pg_database where datname=current_database();
oid  | datname
-------+---------
57352 | db_t
(1 row)


4)1259—对应表空间的main fork文件名

其他fork后面加后缀fsm, vm, init等. 对于超过1GB(系统编译时指定), 文件名后面加.x

[highgo@hgdb01 57352]$ ll /data/highgo/4.1.1/data/pg_tblspc/57351/PG_9.5_201510051/57352/1259*
-rw-------. 1 highgo highgo 106496 Dec  8 17:34 /data/highgo/4.1.1/data/pg_tblspc/57351/PG_9.5_201510051/57352/1259
-rw-------. 1 highgo highgo  24576 Dec  8 17:34 /data/highgo/4.1.1/data/pg_tblspc/57351/PG_9.5_201510051/57352/1259_fsm
-rw-------. 1 highgo highgo   8192 Dec  8 17:34 /data/highgo/4.1.1/data/pg_tblspc/57351/PG_9.5_201510051/57352/1259_vm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息