在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)
# 注意:命令中的加號表示顯示詳細資訊。