今天在 PostgreSQL9.2 测试版上做实验时发现了一奇怪现象,以前可以通过 pg_tablespace 系统表定位表空间对应的物理文件,而在 PostgreSQL9.2 版本不可以,后来查询了下 PostgreSQL9.2 Realease 才知道这个信息有变化。
PostgreSQL9.1 查询表空间
1 |
[postgres ~]$ psql |
备注:pg_tablespace.spclocation 显示了表空间对应系统上的数据目录。
PostgreSQL9.2 beta1 查询表空间
1 |
[postgres ~]$ psql |
备注: PostgreSQL9.2 版的 pg_tablespace 上没有 spclocation 字段,当然查不到表空间对应的数据目录。
PostgreSQL9.2 beta1 的发行说明
Remove the spclocation field from pg_tablespace (Magnus Hagander)
This field was duplicative of the symbolic links already present in the data directory. This allows tablespace directories to be moved while the server is down. Also addpg_tablespace_location()
to allow querying of the symbolic links.
备注:原来在 PostgreSQL9.2 版本中,spclocation 字段信息已经被去除了,同时在 9.2 版本中,提供函数 pg_tablespace_location() 查询表空间对应的数据目录。
PostgreSQL9.2 查询表空间目录
postgres=# /df pg_tablespace_location
List of functions
Schema | Name | Result data type | Argument data types | Type
------------+------------------------+------------------+---------------------+--------
pg_catalog | pg_tablespace_location | text | oid | normal
(1 row)
postgres=# select pg_tablespace_location(16385);
pg_tablespace_location
------------------------------------------
/database/1922/pgdata1/pg_tbs/tbs_francs
(1 row)
也可以通过元子命令查询
postgres=# /db
List of tablespaces
Name | Owner | Location
------------+----------+------------------------------------------
pg_default | postgres |
pg_global | postgres |
tbs_francs | postgres | /database/1922/pgdata1/pg_tbs/tbs_francs
参考
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/tech/database/237876.html