PostgreSQL でデフォルトの表領域の変更

PostgreSQL にはデータベースのデフォルトの表領域があります。 テーブルなどのデータベースのオブジェクトを作成するときに 表領域を指定しなければ、そのデータベースのデフォルトの表領域に作成されます。

次の場合、データベース database1 は tablespace1 を デフォルトの表領域として設定しています。

db=# \x
Expanded display is on.

db=# \l+
List of databases
-[ RECORD 1 ]-----+--------------------------
Name              | database1
Owner             | postgres
Encoding          | UTF8
Collation         | en_US.UTF-8
Ctype             | en_US.UTF-8
Access privileges |
Size              | 51 MB
Tablespace        | tablespace1
Description       |

このデフォルトの表領域の変更ですが PostgreSQL の 8.4 からは ALTER DATABASE 文で 行うことができます。

db=# ALTER DATABASE database1 SET TABLESPACE tablespace2;

これで表領域が tablespace2 になります。

db=# \l+
List of databases
-[ RECORD 1 ]-----+--------------------------
Name              | database1
Owner             | postgres
Encoding          | UTF8
Collation         | en_US.UTF-8
Ctype             | en_US.UTF-8
Access privileges |
Size              | 51 MB
Tablespace        | tablespace2
Description       |

データベースクラスタのデフォルトの表領域に変更する場合は 次のように表領域に pg_default を指定します。

db=# ALTER DATABASE database1 SET TABLESPACE pg_default;

8.4 までは createdb コマンドを使って次のように 変更したりしていたんですが、バージョンアップの内容も 追いかけておかないと 新しいバージョンを使ってるメリットを享受できないですね。

$ createdb -T database1 -D pg_default database2;

Google サイト内検索

Amazonアソシエイト