头图

在PostgreSQL中,数据库在逻辑上分成多个存储单元,该单元称作表空间。表空间用作把逻辑上相关的数据结构放在一起。数据库逻辑上是由一个或多个表空间组成。在数据库初始化的时候,会自动创建pg_default和pg_global两个表空间。其中:

  • pg_global:该表空间用于存放系统表。
  • pg_default:创建表时的默认表空间,该表空间的物理文件存储在数据目录中的base目录中,如:/home/postgres/training/pgsql/data/base。

视频讲解如下:
https://www.bilibili.com/video/BV1EsWAeoEdY/?aid=112980658291...

下面通过具体的操作来演示如何查看PostgreSQL中已有的表空间和如何创建自己的表空间。
(1)登录PostgreSQL。

bin/psql

(2)查看PostgreSQL中已有的表空间。

postgres=# \db

# 输出的信息如下:
       List of tablespaces
    Name    |  Owner   | Location 
------------+----------+----------
 pg_default | postgres | 
 pg_global  | postgres | 
(2 rows)

(3)创建自己的表空间。

postgres=# create tablespace mydemotbs location
postgres-# '/home/postgres/training/pgsql/data/mydemotbs';

(4)在mydemotbs 表空间上创建表。

postgres=# create table testtable1(tid int primary key,tname text)
postgres-# tablespace mydemotbs;

(5)再次查看PostgreSQL中已有的表空间。

postgres=# \db

# 输出的信息如下:
                         List of tablespaces
    Name    |  Owner   |                   Location                   
------------+----------+--------------------------------------------
 mydemotbs  | postgres | /home/postgres/training/pgsql/data/mydemotbs
 pg_default | postgres | 
 pg_global  | postgres | 
(3 rows)

(6)将该表空间设置为默认的表空间。

postgres=# set default_tablespace = mydemotbs;

(7)查询表空间信息

postgres=# select * from pg_tablespace;

# 输出的信息如下:
  oid  |  spcname   | spcowner | spcacl | spcoptions 
-------+------------+----------+--------+------------
  1663 | pg_default |       10 |        | 
  1664 | pg_global  |       10 |        | 
 16394 | mydemotbs  |       10 |        | 
(3 rows)

(8)使用\db+命令查看表空间的详细信息,输出的信息如下:

postgres=# \db+

# 输出的信息如下:
                         List of tablespaces
    Name    |  Owner   |...| Options |    Size    | Description 
------------+----------+---+---------+------------+-------------
 mydemotbs  | postgres |...|         | 8237 bytes | 
 pg_default | postgres |...|         | 29 MB      | 
 pg_global  | postgres |...|         | 531 kB     | 
(3 rows)

# 注意:命令中的加号表示显示详细信息。

赵渝强老师
33 声望11 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...