2025年9月25日: PostgreSQL 18 釋出!
支援的版本:當前18)/ 17 / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0

CREATE TABLESPACE

CREATE TABLESPACE — 定義一個新的表空間

概要

CREATE TABLESPACE tablespace_name
    [ OWNER { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ]
    LOCATION 'directory'
    [ WITH ( tablespace_option = value [, ... ] ) ]

描述

CREATE TABLESPACE 註冊一個新的叢集範圍的表空間。表空間名稱必須與資料庫叢集中任何現有表空間的名稱不同。

表空間允許超級使用者在檔案系統上定義一個備用位置,用於存放包含資料庫物件(如表和索引)的資料檔案。

具有適當許可權的使用者可以將 tablespace_name 傳遞給 CREATE DATABASECREATE TABLECREATE INDEXADD CONSTRAINT,以便這些物件的 資料檔案儲存在指定的表空間中。

警告

表空間不能獨立於其定義的叢集使用;請參閱 第 22.6 節

引數

tablespace_name

要建立的表空間名稱。名稱不能以 pg_ 開頭,因為此類名稱保留給系統表空間。

user_name

將擁有該表空間的使用者名稱稱。如果省略,則預設為執行命令的使用者。只有超級使用者可以建立表空間,但他們可以將表空間的所有權分配給非超級使用者。

directory

將用於表空間的目錄。該目錄必須存在(CREATE TABLESPACE 不會建立它),應該是空的,並且必須由 PostgreSQL 系統使用者擁有。該目錄必須由絕對路徑名指定。

tablespace_option

要設定或重置的表空間引數。目前,唯一可用的引數是 seq_page_costrandom_page_costeffective_io_concurrencymaintenance_io_concurrency。為特定表空間設定這些值將覆蓋規劃器對從該表空間中的表讀取頁面的成本的常規估計,以及這些頁面的併發 I/O 操作次數,這些值由同名的配置引數(請參閱 seq_page_costrandom_page_costeffective_io_concurrencymaintenance_io_concurrency)確定。如果某個表空間位於比 I/O 子系統其餘部分更快或更慢的磁碟上,則可能有用。

註釋

CREATE TABLESPACE 不能在事務塊內執行。

示例

要在檔案系統位置 /data/dbs 建立一個名為 dbspace 的表空間,請首先使用作業系統工具建立目錄並設定正確的許可權

mkdir /data/dbs
chown postgres:postgres /data/dbs

然後,在 PostgreSQL 中發出表空間建立命令

CREATE TABLESPACE dbspace LOCATION '/data/dbs';

要建立一個由其他資料庫使用者擁有的表空間,請使用類似以下的命令

CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';

相容性

CREATE TABLESPACEPostgreSQL 的擴充套件。

提交更正

如果您在文件中發現任何不正確的內容,與您實際使用的功能不符,或者需要進一步澄清,請使用 此表單 報告文件問題。