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がすでに有効になっている場合、アクションは発生しません。指定されたテーブルでAutoPartitioningを無効にするには、

bdr.autopartition_disable を参照してください。

概要

bdr.autopartition_enable(relname regclass);

パラメーター

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

bdr.autopartition_disable

bdr.autopartition_disable を使用して、指定されたテーブルのAutoPartitioningを無効にします。 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がパーティション管理のために使用する内部関数です。関数を直接使用しないことをお勧めします。