作者:瀚高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.
分解:
- 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
PostgreSQL表空间与数据库创建
本文介绍如何在PostgreSQL中创建表空间及指定表空间的数据库,详细展示了创建过程及通过查询验证创建成功的方法。
1420

被折叠的 条评论
为什么被折叠?



