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

PostgreSQL表空间与数据库创建
本文介绍如何在PostgreSQL中创建表空间及指定表空间的数据库,详细展示了创建过程及通过查询验证创建成功的方法。

作者:瀚高PG实验室 (Highgo PG Lab) - 海无涯
1.创建一个表空间:

su - highgo
mkdir -p /tmp/data/user_tCREATE 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;
1
 spcname 
--------- tbls_t
(1 row)

表空间的文件指向

[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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值