Autopartition#

オートパーティションを使用すると、テーブルを複数のパーティションに分割できます。詳細については、

垂直スケーリングまたはスケールアップ を参照してください。

bdr.autopartition#

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

概要#

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か月間保持します

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億の注文を保持できます。

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

bdr.drop_autopartition#

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

bdr.drop_autopartition(relation regclass);

パラメーター#

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

bdr.autopartition_wait_for_partitions#

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

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

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

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

概要#

bdr.autopartition_wait_for_partitions(relation regclass, upperbound text);

パラメーター#

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

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

bdr.autopartition_wait_for_partitions_on_all_nodes#

概要#

bdr.autopartition_wait_for_partitions_on_all_nodes(relation regclass, upperbound text);

パラメーター#

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

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

bdr.autopartition_find_partition#

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

概要#

bdr.autopartition_find_partition(relname regclass, searchkey text);

パラメーター#

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

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

bdr.autopartition_enable#

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

:ref:``bdr.autopartition_disable` <bdr.autopartition_disable>` を参照してください。

概要#

bdr.autopartition_enable(relname regclass);

パラメーター#

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

bdr.autopartition_disable#

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

概要#

bdr.autopartition_disable(relname regclass);

パラメーター#

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

内部ファンクション#

bdr.autopartition_create_partition#

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

概要#

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

パラメーター#

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

  • partname —新しいAutoPartitionの名前。

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

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

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

注#

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

bdr.autopartition_drop_partition#

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

概要#

bdr.autopartition_drop_partition(relname regclass)

パラメーター#

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

注#

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