テーブル空間PostgreSQLのテーブル空間により、データベース管理者はデータベースオブジェクトを表すファイルを格納できるファイルシステム上の場所を定義することができます。テーブル空間を一度作成すると、データベースオブジェクトを作成する時に名前により参照することができます。テーブル空間を使用することで、管理者はPostgreSQLインストレーションのディスクレイアウトを制御することができます。これは、少なくとも2つの点で有用です。1つは、クラスタを初期化したパーティションもしくはボリュームの容量が不足し、拡張を行うことができない場合、システムを再構成するまで、別のパーティションにテーブル空間を作成して、このテーブル空間を使用することができます。1つは、テーブル空間により、管理者はデータベースオブジェクトの使用パターンに基づいてデータ格納場所を調整することができることです。非常によく使用されるインデックスを、例えば、高価なソリッドステートディスクなどの高速・高可用性ディスクに格納することができます。同時に、めったに使用されない保存用のデータや性能が求められていない保存用のデータを格納するテーブルを低価格・低速ディスクシステムに格納することもできます。TABLESPACEを使用してください。'/mnt/sda1/postgresql/data';この場所は、既存かつ空のディレクトリでなければならず、また、PostgreSQLシステムユーザが所有していなければなりません。その後に、テーブル空間内に作成されるオブジェクトは全てこのディレクトリ以下のファイルに格納されます。通常、論理ファイルシステム内の個々のファイルの場所を制御することができませんので、1つの論理ファイルシステムに複数のテーブル空間を作成することは意味がありません。PostgreSQLにはこうした制限はありません。実際、システムのファイルシステムの境を直接意識しません。使用することを宣言したディレクトリにファイルを格納します。テーブル空間自体の生成はデータベーススーパーユーザが行う必要があります。その後に、データベース一般ユーザにそのテーブル空間を使用させることができます。これを行うには、ユーザにテーブル空間に対するCREATE権限を与えてください。テーブル、インデックス、およびデータベース全体は特定のテーブル空間に割り当て可能です。これを行うには、指定テーブル空間にCREATE権限を持つユーザが関連するコマンドにテーブル空間をパラメータとして渡す必要があります。以下はspace1テーブル空間にあるテーブルを作成しています。space1;他の方法として、以下のようにdefault_tablespaceパラメータの使用があります。TABLESPACE句として適用されます。データベースに関連付けされたテーブル空間は、そのデータベースのシステムカタログ、ならびにデータベースを使用するサーバプロセスが作成する全ての一時ファイルを格納するために使用されます。(明示的に、もしくはdefault_tablespace経由で)TABLESPACE句を付けずにデータベース内に作成されたテーブルやインデックスのデフォルトのテーブル空間としても使用されます。テーブル空間の指定なしで作成されたデータベースは、コピー元のテンプレートデータベースのテーブル空間と同じものを使用します。initdbにより、2つのテーブル空間が自動的に作成されます。pg_globalテーブル空間は共有システムカタログ用に使用されます。DATABASEのTABLESPACE句で変更されない限り、このテーブル空間が同様に他のデータベースに対するデフォルトのテーブル空間になります)。テーブル空間は、一度作成すると、全てのデータベースから使用することができ、十分な権限を持つユーザに提供することができます。これは、テーブル空間を使用する全てのデータベースの全てのオブジェクトが削除されるまで、そのテーブル空間を削除することができないことを意味します。TABLESPACEコマンドを使用してください。既存のテーブル空間群を求めるには、以下の例のようにpg_tablespaceを確認してください。pg_tablespace;また、psqlプログラムの\dbメタコマンドも既存のテーブル空間を列挙する際に役に立ちます。テーブル空間の実装を単純化するために、PostgreSQLは広範にわたってシンボリックリンクを使用します。これは、テーブル空間はシンボリックリンクをサポートするシステムでのみ使用することができるということを意味します。$PGDATA/pg_tblspcディレクトリには、そのクラスタで定義された非組み込みテーブル空間1つひとつを指し示すシンボリックリンクがあります。推奨はしませんが、こうしたリンクを手作業で再定義してテーブル空間のレイアウトを調整することができます。これをpostmaster実行中に行わないでください。(これを行わないと、pg_dumpが古いテーブル空間の場所を示したままになってしまいます)。