PostgreSQL 创建表空间
在本教程中,您将学习如何使用PostgreSQL CREATE TABLESPACE语句创建表空间。
摘要:在本教程中,您将学习如何使用PostgreSQL CREATE TABLESPACE语句创建表空间。
PostgreSQL 表空间介绍
表空间是磁盘上 PostgreSQL 存储包含数据库对象(例如索引和表)的数据文件的位置。
PostgreSQL 使用表空间将逻辑名称映射到磁盘上的物理位置。
PostgreSQL 带有两个默认表空间:
pg_default表空间存储用户数据。pg_global表空间存储全局数据。
表空间允许您控制 PostgreSQL 的磁盘布局。使用表空间有两个主要优点:
- 首先,如果集群初始化所在的分区空间不足,您可以在不同的分区上创建一个新的表空间并使用它,直到您重新配置系统。
- 其次,您可以使用统计信息来优化数据库性能。例如,您可以将频繁访问的索引或表放在执行速度非常快的设备(例如固态设备)上,并将包含很少使用的归档数据的表放在较慢的设备上。
PostgreSQL CREATE TABLESPACE 语句
要创建新表空间,请使用以下 CREATE TABLESPACE 语句:
CREATE TABLESPACE tablespace_name
OWNER user_name
LOCATION directory_path;
表空间的名称不应以 开头 pg_ ,因为这些名称是为系统表空间保留的。
默认情况下,执行 的用户 CREATE TABLESPACE 是表空间的所有者。要将另一个用户指定为表空间的所有者,请在 OWNER 关键字后指定它。
本 directory_path 是用于表空间的空目录的绝对路径。PostgreSQL 系统用户必须拥有这个目录才能读写数据。
创建表空间后,您可以在 CREATE DATABASE , CREATE TABLE 和 CREATE INDEX 语句中指定它来存储表空间中对象的数据文件。
PostgreSQL 创建表示例
以下语句使用 CREATE TABLESPACE 来创建一个新的表空间 ts_primary ,该表空间被称为物理位置 c:\pgdata\primary 。
CREATE TABLESPACE ts_primary
LOCATION 'c:\pgdata\primary';
请注意,此语句使用 Unix 样式的斜杠作为目录路径。在执行命令之前,c:\pgdata\primary 必须存在。
要列出当前 PostgreSQL 数据库服务器中的所有表空间,请使用以下 \db 命令:
\db
输出:
List of tablespaces
Name | Owner | Location
------------+----------+-------------------
pg_default | postgres |
pg_global | postgres |
ts_primary | postgres | c:\pgdata\primary
(4 rows)db+ 命令显示更多信息,例如大小和访问权限:
List of tablespaces
Name | Owner | Location | Access privileges | Options | Size | Description
------------+----------+-------------------+-------------------+---------+---------+-------------
pg_default | postgres | | | | 124 MB |
pg_global | postgres | | | | 625 kB |
ts_primary | postgres | c:\pgdata\primary | | | 0 bytes |
(4 rows)以下语句创建使用 ts_primary 表空间的物流数据库:
CREATE DATABASE logistics
TABLESPACE ts_primary;
该 TABLESPACE 子句指示 logistics 数据库将用于存储数据的表空间。
以下语句创建一个名为的新表 deliveries 并向该表中插入一行:
CREATE TABLE deliveries (
delivery_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
order_date DATE,
customer_id INT
);
INSERT INTO deliveries(order_date, customer_id)
VALUES('2020-08-01',1);
由于 ts_primary 表空间有一些数据,可以在psql中使用如下命令查看其信息:
\db+ ts_primary
输出:
Name | Owner | Location | Access privileges | Options | Size | Description
------------+----------+-------------------+-------------------+---------+---------+-------------
ts_primary | postgres | c:\pgdata\primary | | | 8033 kB |
(1 row)概括
- 表空间是存储设备上 PostgreSQL 存储数据文件的位置。
- 使用该
CREATE TABLESAPCE语句创建新表空间。