CREATE TABLESPACE — 新しいテーブル空間を定義する
CREATE TABLESPACEtablespace_name[ OWNER {new_owner| CURRENT_USER | SESSION_USER } ] LOCATION 'directory' [ WITH (tablespace_option=value[, ... ] ) ]
CREATE TABLESPACEはクラスタ全体で使用できるテーブル空間を新規に登録します。
このテーブル空間名は、データベースクラスタ内の既存のテーブル空間名と異なるものでなければなりません。
スーパーユーザはテーブル空間を使用することで、データベースオブジェクト(テーブルやインデックスなど)が入ったデータファイルを格納できる、ファイルシステム上の別の場所を定義できます。
適切な権限を持つユーザは、CREATE DATABASEやCREATE TABLE、CREATE INDEX、ADD CONSTRAINTコマンドにtablespace_nameを渡すことで、これらのオブジェクトを指定したテーブル空間に格納することができます。
テーブル空間は、それが定義されているクラスタと独立して使うことはできません。 22.6. テーブル空間>を参照してください。
tablespace_name作成するテーブル空間の名前です。
pg_から始まる名前はシステムのテーブル空間用に予約されているので使用することはできません。
user_nameテーブル空間を所有するユーザの名前です。 省略時はデフォルトでコマンドを実行したユーザとなります。 テーブル空間を作成できるのはスーパーユーザのみですが、テーブル空間の所有権を非スーパーユーザに割り当てることは可能です。
directoryテーブル空間用に使用するディレクトリです。 このディレクトリは空であるべきです。また、PostgreSQLのシステムユーザが所有していなければなりません。 このディレクトリは絶対パス名で指定する必要があります。
tablespace_option値を設定あるいはリセットするテーブル空間のパラメータです。
現在、利用可能なパラメータはseq_page_cost、random_page_cost、effective_io_concurrencyだけです。
特定のテーブル空間について、そのいずれかの値を設定すると、そのテーブル空間内のテーブルからページを読み込むコストの推定値について、プランナが通常参照する同じ名前の設定パラメータ(seq_page_cost、random_page_cost、effective_io_concurrencyを参照)よりも優先します。
テーブル空間が、他のI/Oサブシステムより高速あるいは低速なディスク上にある時は、これが有効でしょう。
テーブル空間は、シンボリックリンクをサポートしているシステムでのみサポートされます。
トランザクションブロック内でCREATE TABLESPACEを実行することはできません。
/data/dbsにテーブル空間dbspaceを作成します。
CREATE TABLESPACE dbspace LOCATION '/data/dbs';
/data/indexesに、ユーザgenevieveが所有するテーブル空間indexspaceを作成します。
CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';
CREATE TABLESPACEはPostgreSQLの拡張です。