Autopartition
=============

オートパーティションを使用すると、テーブルを複数のパーティションに分割できます。詳細については、
 :ref:`垂直スケーリングまたはスケールアップ <垂直スケーリングまたはスケールアップ>` を参照してください。

bdr.autopartition
^^^^^^^^^^^^^^^^^

``bdr.autopartition``
ファンクションは、テーブルの自動RANGEパーティションを構成します。

概要
^^^^

.. code:: sql

   bdr.autopartition(relation regclass,
           partition_increment text,
           partition_initial_lowerbound text DEFAULT NULL,
           partition_autocreate_expression text DEFAULT NULL,
           minimum_advance_partitions integer DEFAULT 2,
           maximum_advance_partitions integer DEFAULT 5,
           data_retention_period interval DEFAULT NULL,
           managed_locally boolean DEFAULT false,
           enabled boolean DEFAULT on);

パラメーター
^^^^^^^^^^^^

-  ``relation`` —テーブルの名前またはOID。

-  ``partition_increment``
   —次のパーティション作成までのインターバルまたはインクリメント。

-  ``partition_initial_lowerbound``
   —テーブルにパーティションがない場合、この下限と\ ``partition_increment``
   離れた上限を持つ最初のパーティションが作成されます。

-  ``partition_autocreate_expression``
   —新しいパーティションを作成する時期が来たかどうかを検出するために使用される式。

-  ``minimum_advance_partitions``
   —システムは、常に少なくとも\ ``minimum_advance_partitions``
   パーティションを持とうとします。

-  ``maximum_advance_partitions``
   —事前パーティションの数が\ ``minimum_advance_partitions``
   を下回った後に、一度に作成するパーティションの数。

-  ``data_retention_period``
   —古いパーティションが削除されるまでの間隔定義されている場合。この値は\ ``migrate_after_period``
   より大きい必要があります。

-  ``managed_locally`` —
   trueの場合、パーティションはローカルに管理されます。

-  ``enabled``
   —アクティビティを無効または一時停止し、後で再開または再有効化できます。

例
^^

日次パーティション、データを1か月間保持します

.. code:: sql

   CREATE TABLE measurement (
   logdate date not null,
   peaktemp int,
   unitsales int
   ) PARTITION BY RANGE (logdate);

   bdr.autopartition(measurement, 1 day, data_retention_period := 30 days);

あと2つのパーティションのみが残っている場合、5つの高度なパーティションを作成します。各パーティションには、10億の注文を保持できます。

.. code:: sql

   bdr.autopartition(Orders, 1000000000,
           partition_initial_lowerbound := 0,
           minimum_advance_partitions := 2,
           maximum_advance_partitions := 5
        );

bdr.drop_autopartition
^^^^^^^^^^^^^^^^^^^^^^

``bdr.drop_autopartition()``
を使用して、特定のリレーションの自動パーティションルールを削除します。リレーションの保留中の作業項目はすべて削除され、新しい作業項目は作成されません。

.. code:: sql

   bdr.drop_autopartition(relation regclass);

.. _パラメーター-1:

パラメーター
^^^^^^^^^^^^

-  ``relation`` —テーブルの名前またはOID。

bdr.autopartition_wait_for_partitions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

パーティションの作成は非同期プロセスです。
AutoPartitionは、ローカルまたはすべてのノードでパーティションが作成されるのを待機する一連の機能を提供します。

``bdr.autopartition_wait_for_partitions()``
を使用して、ローカルノードでパーティションの作成を待機します。ファンクションは、パーティションテーブル名とパーティションキー列値を取得し、その値を保持するパーティションが作成されるまで待機します。

このファンクションは、パーティションがローカルに作成されるのをのみ待機します。パーティションがリモートノードにも存在することは保証されません。

すべてのPGDノードでパーティションが作成されるのを待機するには、
``bdr.autopartition_wait_for_partitions_on_all_nodes()``
ファンクションを使用します。このファンクションは、ローカルノードとすべてのリモートノードを内部的にチェックし、パーティションがどこでも作成されるまで待機します。

.. _概要-1:

概要
^^^^

.. code:: sql

   bdr.autopartition_wait_for_partitions(relation regclass, upperbound text);

.. _パラメーター-2:

パラメーター
^^^^^^^^^^^^

-  ``relation`` —テーブルの名前またはOID。

-  ``upperbound`` —パーティションキー列の値。

bdr.autopartition_wait_for_partitions_on_all_nodes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. _概要-2:

概要
^^^^

.. code:: sql

   bdr.autopartition_wait_for_partitions_on_all_nodes(relation regclass, upperbound text);

.. _パラメーター-3:

パラメーター
^^^^^^^^^^^^

-  ``relation`` —テーブルの名前またはOID。

-  ``upperbound`` —パーティションキー列の値。

bdr.autopartition_find_partition
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``bdr.autopartition_find_partition()``
ファンクションを使用して、指定されたパーティションキー値のパーティションを見つけます。その値を保持するパーティションが存在しない場合、ファンクションはNULLを結果ます。それ以外の場合、パーティションのOidが返されます。

.. _概要-3:

概要
^^^^

.. code:: sql

   bdr.autopartition_find_partition(relname regclass, searchkey text);

.. _パラメーター-4:

パラメーター
^^^^^^^^^^^^

-  ``relname`` —パーティション分割テーブルの名前。

-  ``searchkey`` —検索するパーティションキー値。

bdr.autopartition_enable
^^^^^^^^^^^^^^^^^^^^^^^^

``bdr.autopartition_enable``
を使用して、指定されたテーブルでAutoPartitioningを有効にします。
AutoPartitioningが既に有効になっている場合、アクションは発生しません。特定のテーブルで自動パーティションを無効にするには、
 :ref:``bdr.autopartition_disable` <`bdr.autopartition_disable`>` を参照してください。

.. _概要-4:

概要
^^^^

.. code:: sql

   bdr.autopartition_enable(relname regclass);

.. _パラメーター-5:

パラメーター
^^^^^^^^^^^^

-  ``relname`` — AutoPartitioningを有効にするリレーションの名前。

``bdr.autopartition_disable``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``bdr.autopartition_disable``
を使用して、指定されたテーブルで自動パーティションを無効にします。
AutoPartitioningが既に無効になっている場合、アクションは発生しません。

.. _概要-5:

概要
^^^^

.. code:: sql

   bdr.autopartition_disable(relname regclass);

.. _パラメーター-6:

パラメーター
^^^^^^^^^^^^

-  ``relname`` — AutoPartitioningを無効にする関係の名前。

内部ファンクション
^^^^^^^^^^^^^^^^^^

bdr.autopartition_create_partition
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

AutoPartitionは、内部ファンクション\ ``bdr.autopartition_create_partition``
を使用して、親テーブルにスタンドアロンのAutoPartitionを作成します。

.. _概要-6:

概要
^^^^

.. code:: sql

   bdr.autopartition_create_partition(relname regclass,
                                  partname name,
                                    lowerb text,
                                    upperb text,
                                    nodes oid[]);

.. _パラメーター-7:

パラメーター
^^^^^^^^^^^^

-  ``relname`` —アタッチする親テーブルの名前またはOid。

-  ``partname`` —新しいAutoPartitionの名前。

-  ``lowerb`` —パーティションの下限。

-  ``upperb`` —パーティションの上限。

-  ``nodes``
   —新しいパーティションが存在するノードのリスト。このパラメーターはPGDの内部であり、将来の使用のために予約されています。

注
^^

これは、AutoPartitionがパーティション管理に使用する内部機能です。このファンクションを直接使用しないことをお勧めします。

bdr.autopartition_drop_partition
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

AutoPartitionは、内部ファンクション\ ``bdr.autopartition_drop_partition``
を使用して、データ保持ポリシーに従って、不要になったパーティションを削除します。パーティションテーブルのドロップが成功した場合、ファンクションは\ ``true``
を結果ます。

.. _概要-7:

概要
^^^^

.. code:: sql

   bdr.autopartition_drop_partition(relname regclass)

.. _パラメーター-8:

パラメーター
^^^^^^^^^^^^

-  ``relname`` —ドロップするパーティションテーブルの名前。

.. _注-1:

注
^^

このファンクションは、選択したパーティションテーブルで\ ``DROP TABLE``
を使用する前に、親テーブルにDDLロックを配置します。この機能は、AutoPartitionがパーティション管理に使用する内部ファンクションです。このファンクションを直接使用しないことをお勧めします。
