支援的版本: 目前 (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。為特定表空間設定這些值將覆蓋規劃器對從該表空間中的資料表讀取頁面成本的通常估計,以及執行器的預取行為,這些行為由相同名稱的組態參數建立(請參閱 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 擴充功能。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。