CREATE TABLESPACE — 定義新的表空間
CREATE TABLESPACEtablespace_name
[ OWNER {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ] LOCATION 'directory
' [ WITH (tablespace_option
=value
[, ... ] ) ]
CREATE TABLESPACE
註冊一個新的叢集範圍的表空間。表空間名稱必須與資料庫叢集中任何現有表空間的名稱不同。
表空間允許超級使用者在檔案系統上定義一個替代位置,用於存放包含資料庫物件(例如資料表和索引)的資料檔案。
具有適當權限的使用者可以將 tablespace_name
傳遞給 CREATE DATABASE
、CREATE TABLE
、CREATE INDEX
或 ADD CONSTRAINT
,以將這些物件的資料檔案儲存在指定的表空間中。
表空間不能獨立於定義它的叢集使用;請參閱 第 22.6 節。
tablespace_name
要建立的表空間的名稱。名稱不能以 pg_
開頭,因為這些名稱保留給系統表空間。
user_name
將擁有表空間的使用者名稱。如果省略,則預設為執行命令的使用者。只有超級使用者才能建立表空間,但他們可以將表空間的所有權分配給非超級使用者。
directory
將用於表空間的目錄。目錄必須存在(CREATE TABLESPACE
不會建立它),應該是空的,並且必須由 PostgreSQL 系統使用者擁有。必須使用絕對路徑名稱指定目錄。
tablespace_option
要設定或重設的表空間參數。目前,唯一可用的參數是 seq_page_cost
、random_page_cost
、effective_io_concurrency
和 maintenance_io_concurrency
。為特定表空間設定這些值將覆蓋規劃器對從該表空間中的資料表讀取頁面成本的通常估計,以及執行器的預取行為,這些行為由相同名稱的組態參數建立(請參閱 seq_page_cost、random_page_cost、effective_io_concurrency、maintenance_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 TABLESPACE
是 PostgreSQL 擴充功能。
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。