他のバージョンの文書 16 | 15 | 14 | 13 | 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 | 7.4 | 7.3 | 7.2

CREATE TABLESPACE

CREATE TABLESPACE — 新しいテーブル空間を定義する

概要

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

説明

CREATE TABLESPACEはクラスタ全体で使用できるテーブル空間を新規に登録します。 このテーブル空間名は、データベースクラスタ内の既存のテーブル空間名と異なるものでなければなりません。

スーパーユーザはテーブル空間を使用することで、データベースオブジェクト(テーブルやインデックスなど)が入ったデータファイルを格納できる、ファイルシステム上の別の場所を定義できます。

適切な権限を持つユーザは、CREATE DATABASECREATE TABLECREATE INDEXADD CONSTRAINTコマンドにtablespace_nameを渡すことで、これらのオブジェクトを指定したテーブル空間に格納することができます。

警告

テーブル空間は、それが定義されているクラスタと独立して使うことはできません。 22.6を参照してください。

パラメータ

tablespace_name

作成するテーブル空間の名前です。 pg_から始まる名前はシステムのテーブル空間用に予約されているので使用することはできません。

user_name

テーブル空間を所有するユーザの名前です。 省略時はデフォルトでコマンドを実行したユーザとなります。 テーブル空間を作成できるのはスーパーユーザのみですが、テーブル空間の所有権を非スーパーユーザに割り当てることは可能です。

directory

テーブル空間用に使用するディレクトリです。 このディレクトリは存在していなければなりませんし(CREATE TABLESPACE はディレクトリを作成しません)、空であるべきです。また、PostgreSQLのシステムユーザが所有していなければなりません。 このディレクトリは絶対パス名で指定する必要があります。

tablespace_option

値を設定あるいはリセットするテーブル空間のパラメータです。 現在、利用可能なパラメータはseq_page_costrandom_page_costeffective_io_concurrencyだけです。 特定のテーブル空間について、そのいずれかの値を設定すると、そのテーブル空間内のテーブルからページを読み込むコストの推定値について、プランナが通常参照する同じ名前の設定パラメータ(seq_page_costrandom_page_costeffective_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の拡張です。

関連項目

CREATE DATABASE, CREATE TABLE, CREATE INDEX, DROP TABLESPACE, ALTER TABLESPACE