blob: dbece10b679a2aa1b4c7d2f16c73eb469ac7cf6a [file] [log] [blame]
pt-set-tablespace
=================
概要
----
指定したテーブルと関連するインデックスのテーブルスペースを一括して変更します。
実行方法
--------
.. code-block:: none
pt-set-tablespace [option...] [tablespace]
オプション
----------
.. code-block:: none
-h, --host=HOSTNAME
-p, --port=PORT
-U, --username=USERNAME
-d, --dbname=DBNAME
-o, --owner=STRING
-n, --schema=STRING
-t, --table=STRING
-l, --list
--apply
--help
``-h``, ``--host`` オプションは、接続するPostgreSQLデータベースのサーバ名またはIPアドレスを指定します。オプションが指定されない場合は、PGHOST環境変数に設定された値が使われます。PGHOST環境変数が設定されていない場合には、デフォルトの値として ``localhost`` が使われます。
``-p``, ``--port`` オプションは、接続するPostgreSQLデータベースのポート番号を指定します。オプションが指定されない場合は、PGPORT環境変数に設定された値が使われます。PGPORT環境変数が設定されていない場合には、デフォルトの値として ``5432`` が使われます。
``-U``, ``--username`` オプションは、PostgreSQLデータベースに接続するユーザ名を指定します。オプションが指定されない場合は、PGUSER環境変数に設定された値が使われます。PGUSER環境変数が設定されていない場合には、USER環境変数に設定された値が使われます。
``-d``, ``--dbname`` オプションは、接続するデータベース名を指定します。オプションが指定されない場合は、PGDATABASE環境変数に設定された値が使われます。PGDATABASE環境変数が設定されていない場合には、データベースに接続するユーザ名と同じ名前のデータベースに接続します。
``-o``, ``--owner`` オプションは、指定した文字列に合致する名前のユーザが所有者となっているテーブルのみを対象とします。
``-n``, ``--schema`` オプションは、指定した文字列に合致する名前のスキーマにあるテーブルのみを対象とします。
``-t``, ``--table`` オプションは、指定した文字列に合致する名前のテーブルのみを対象とします。
``--apply`` オプションは、テーブルスペースの変更を実際にデータベースに反映します。
``-l``, ``--list`` オプションは、テーブルスペースの情報を表示します。
``-o`` (または ``--owner`` ), ``-n`` (または ``--schema`` ), ``-t`` (または ``--table`` を同時に指定した場合には、すべての条件に合致するテーブルのみが対象となります。
1つ以上のテーブルの移動に失敗した場合には終了コード ``1`` を返します。すべてのファイルの移動に成功した場合には ``0`` を返します。
出力項目
--------
``-l``, ``--list`` オプションで表示される項目は以下の通りです。
.. csv-table::
``OID``, テーブルスペースのオブジェクトID
``OWNER``, テーブルスペースの所有者のユーザ名
``TABLESPACE``, テーブルスペース名
``LOCATION``, テーブルスペースの配置されているディレクトリのパス
``USE%``, テーブルスペースの配置されているパーティションのディスク使用率
``AVAIL``, テーブルスペースの配置されているパーティションの空き容量
その他の表示項目は以下の通りです。
.. csv-table::
``Dry-run mode``, 発行するALTER TABLE/INDEX文を表示しますが、実際の移動は行いません。
``Applying ALTER TABLE/INDEX``, ALTER TABLE/INDEX文を実際に実行して、テーブル/インデックスのテーブルスペースを変更します。
``X tables/indexes moved. Y failed.``, ``X`` 個のテーブル/インデックスを移動に成功し、 ``Y`` 個の移動に失敗しました。
実行例
------
PostgreSQLインスタンスに存在するテーブルスペースの一覧を表示します。 各パーティションの使用領域を取得し、併せて一覧として表示します。
.. code-block:: none
$ pt-set-tablespace --list
+--------+----------+------------+---------------------------+------+-------+
| OID | OWNER | TABLESPACE | LOCATION | USE% | AVAIL |
+--------+----------+------------+---------------------------+------+-------+
| 1663 | postgres | pg_default | | | |
| 1664 | postgres | pg_global | | | |
| 121263 | postgres | hddspc2 | /disk/disk2/pgsql | 85% | 80G |
| 16818 | postgres | ssdspc1 | /disk/disk1/tblspc1 | 67% | 127G |
| 305242 | postgres | ssdspc2 | /disk/disk3/pgsql/ssdspc2 | 98% | 13G |
+--------+----------+------------+---------------------------+------+-------+
$
``dbt3`` データベースにある ``orders`` テーブル、および ``orders`` テーブルに作成されたインデックスのすべてを、 ``ssdspc1`` テーブルスペースに移動するための ``ALTER TABLE`` 文および ``ALTER INDEX`` 文を表示します。(実際の移動は行いません)
.. code-block:: none
$ pt-set-tablespace -d dbt3 --table orders ssdspc1
[2015-04-29 17:35:24] INFO: Dry-run mode:
[2015-04-29 17:35:24] INFO: ALTER TABLE "public"."orders" SET TABLESPACE "ssdspc1";
[2015-04-29 17:35:24] INFO: ALTER INDEX "public"."pk_orders" SET TABLESPACE "ssdspc1";
[2015-04-29 17:35:24] INFO: ALTER INDEX "public"."i_o_orderdate" SET TABLESPACE "ssdspc1";
[2015-04-29 17:35:24] INFO: ALTER INDEX "public"."i_o_custkey" SET TABLESPACE "ssdspc1";
$
``dbt3`` データベースにある ``orders`` テーブル、および ``orders`` テーブルに作成されたインデックスのすべてを、 ``ssdspc1`` テーブルスペースに移動します。
.. code-block:: none
$ pt-set-tablespace -d dbt3 --table orders --apply ssdspc1
[2015-04-29 17:37:06] INFO: Applying ALTER TABLE/INDEX...
[2015-04-29 17:37:08] INFO: 4 tables/indexes moved. 0 failed.
$
``dbt3`` スキーマ内にあるすべてのテーブル、およびすべてのインデックスを、 ``ssdspc1`` テーブルスペースに移動します。
.. code-block:: none
$ pt-set-tablespace --schema dbt3 --apply ssdspc1
[2015-04-29 17:38:39] INFO: Applying ALTER TABLE/INDEX...
[2015-04-29 17:38:57] INFO: 31 tables/indexes moved. 0 failed.
$