11では、デーブル・パーティショニング機能が大幅にアップデートされる予定です。本コラムでは2回に分けてテーブル・パーティショニング機能にどのような改善が導入されたかを徹底解説していきます。今回は、以下の機能を紹介します。顧客番号など基本的な使い方ハッシュ・パーティショニングを使用する場合、親テーブル作成時にHASH方式を選択します。nにはHASH値の除数を指定し、iには剰余を指定します。パーティション・キーのHASH値をnで割った剰余を元に、格納される子テーブルが決定されます。そのため、各子テーブルでremainderは異なる数である必要があります。以下の例では、4つの子テーブルを作成しています。3);サンプルデータを投入し、各テーブルの状態を確認します。rows)ハッシュ・パーティショニングの分割数を増やすテーブル・パーティショニング機能を利用していると、データ増加に合わせてテーブルの分割数を増やしたいケースがあります。レンジ・パーティショニングでは、新しいデータの範囲に対して子テーブルを追加することは容易ですが、ハッシュ・パーティショニングはその性質上、パーティション・キーのハッシュ値で子テーブルに均一に分割されているため、単純に子テーブルを追加するだけではできません。PostgreSQLのハッシュ・パーティショニングでは、各テーブルのmodulusの値はすでに設定済みのmodulusの倍数であれば、異なる値を設定することができます。20...の値が指定できます。このような性質と、子テーブルのデタッチ機能を組み合わせることで、子テーブルの数を増やすことができます。8の子テーブルを2つ作成します。元の子テーブル(u_1)のデータを親テーブルに挿入することで、新しく作成した2つの子テーブル(u_1とu_5)にデータを格納します。rows)1つの子テーブルに格納されていたデータを2つの子テーブルに分割することができました。この操作を全ての子テーブルに行うことで、ハッシュ・パーティショニングの分割数を4から8に増やすことができます。デフォルト・パーティションPostgreSQL10のテーブル・パーティショニングでは、データの振り分け先となる子テーブルが存在しない場合は、エラーとなっていました。11のデフォルト・パーティションを利用することで、振り分け先がないデータが格納される子テーブルを作成することが可能です。デフォルト・パーティションはレンジ・パーティショニングとリスト・パーティショニングでのみ有効です。デフォルト・パーティションは、子テーブルを作成する際にDEFAULT句を指定します。11で利用できるようになりました。デフォルト・パーティションに想定外の値を一時的に貯めておき、新しく作成した子テーブルにデータを移す、というようなデータを入れ直す使い方も可能になります。10では、各子テーブルへのインデックス作成は、テーブルごとに行う必要があるため、運用が煩雑になっていました。11では、親テーブルに作成されたインデックスは子テーブルにも自動的に作成されるようになりました。これにより、パーティション・テーブル全体での一意制約の付与など、インデックス管理が楽になります。(c)上記例では、親テーブルに作成済みのインデックスが新規に作成した子テーブルに伝搬されましたが、親テーブルに対するインデックス作成時には、全ての子テーブルに対するインデックス作成が行われるため、本機能使用時はサーバへの負荷に注意してください。11で導入されたテーブル・パーティショニングの機能改善の一部を紹介しました。これらの機能が導入された事により、より便利にテーブル・パーティショニング機能を利用することが出来るようになりました。11では、この他にも多くの機能改善が導入されています。第二回では、主にテーブル・パーティショニングの性能向上について解説するので、ご期待下さい。Corporation。