在PostgreSQL中,数据库在逻辑上分成多个存储单元,该单元称作表空间。表空间用作把逻辑上相关的数据结构放在一起。数据库逻辑上是由一个或多个表空间组成。在数据库初始化的时候,会自动创建pg_default和pg_global两个表空间。其中:
- pg_global:该表空间用于存放系统表。
- pg_default:创建表时的默认表空间,该表空间的物理文件存储在数据目录中的base目录中,如:/home/postgres/training/pgsql/data/base。
视频讲解如下:
下面通过具体的操作来演示如何查看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) # 注意:命令中的加号表示显示详细信息。