PostgreSQL パーティショニングのチュートリアル

Postgresql Patishoningunochutoriaru



どのようなデータベースでも、特に大規模なデータが関与する場合、パフォーマンスは効果的な信頼性を実現するために対処する必要がある指標の 1 つです。 PostgreSQL では、レコードの検索中にテーブルをスキャンするのに必要な時間とリソースを節約するために、テーブル パーティションを作成する必要があります。大きなテーブルを小さな部分に分割すると、必要なメモリ スワップが減り、データベース操作が節約されるため、アプリケーションのパフォーマンスが向上します。

この投稿では、PostgreSQL のパーティショニングについて説明します。使用できるさまざまなパーティショニング オプションについて説明し、理解を深めるためにそれらの使用方法の例を示します。

PostgreSQL パーティションを作成する方法

どのデータベースにも、複数のエントリを持つ多数のテーブルが含まれる可能性があります。管理を容易にするために、テーブルをパーティション化する必要があります。これは、データベースの最適化と信頼性の向上に優れた推奨されるデータ ウェアハウス ルーチンです。リスト、範囲、ハッシュなどのさまざまなパーティションを作成できます。それぞれについて詳しく説明しましょう。







1. リストの分割

パーティション分割を検討する前に、パーティションに使用するテーブルを作成する必要があります。テーブルを作成するときは、すべてのパーティションに対して指定された構文に従います。



CREATE TABLE テーブル名(列 1 のデータ型、列 2 のデータ型) PARTITION BY <パーティション タイプ>(パーティション キー);

「table_name」は、テーブルの名前と、テーブルに含まれるさまざまな列およびそのデータ型です。 「partition_key」の場合、パーティション化が行われる列です。たとえば、次の画像は、3 つの列を持つ「courses」テーブルを作成したことを示しています。さらに、パーティショニング タイプは LIST であり、パーティショニング キーとして教員列を選択します。







テーブルを作成したら、必要なさまざまなパーティションを作成する必要があります。そのためには、次の構文に進みます。

CREATE TABLE パーティションテーブル メインテーブルのパーティション (値);

たとえば、次の図の最初の例は、値が「FSET」であるパー​​ティション キーとして選択した「faculty」列のすべての値を保持する「Fset」という名前のパーティション テーブルを作成したことを示しています。作成した他の 2 つのパーティションにも同様のロジックを使用しました。



パーティションを取得したら、作成したメインテーブルに値を挿入できます。挿入した各値は、選択したパーティション キーの値に基づいて、それぞれのパーティションと照合されます。

メインテーブル内のすべてのエントリをリストすると、挿入したすべてのエントリがテーブルに含まれていることがわかります。

パーティションが正常に作成されたことを確認するために、作成された各パーティション内のレコードを確認してみましょう。

各パーティション テーブルには、パーティション分割時に定義された基準に一致するエントリのみが保持されることに注目してください。これがリストによるパーティショニングの仕組みです。

2. 範囲分割

パーティションを作成するためのもう 1 つの基準は、RANGE オプションを使用することです。このためには、範囲に使用する開始値と終了値を指定する必要があります。このメソッドの使用は、日付を操作する場合に最適です。

メインテーブルを作成するための構文は次のとおりです。

CREATE TABLE テーブル名(列 1 データ型、列 2 データ型) PARTITION BY RANGE (パーティションキー);

「cust_orders」テーブルを作成し、日付を「partition_key」として使用するように指定しました。

パーティションを作成するには、次の構文を使用します。

(start_value) TO (end_value) までの値に対して main_table のパーティション テーブル パーティションを作成します。

「日付」列を使用して四半期ごとに機能するようにパーティションを定義しました。

すべてのパーティションを作成し、データを挿入すると、テーブルは次のようになります。

作成されたパーティション内のエントリをチェックすると、パーティショニングが機能し、指定したパーティショニング基準に従って適切なレコードのみが存在することが確認されます。テーブルに追加するすべての新しいエントリは、それぞれのパーティションに自動的に追加されます。

3. ハッシュパーティショニング

ここで説明する最後のパーティション化基準は、ハッシュの使用です。次の構文を使用して、メイン テーブルを簡単に作成してみましょう。

CREATE TABLE テーブル名(列 1 データ型、列 2 データ型) PARTITION BY HASH (パーティションキー);

ハッシュを使用してパーティション分割する場合は、指定した「partition_key」のハッシュ値で分割する行と剰余を指定する必要があります。この例では、係数 4 を使用します。

構文は次のとおりです。

CREATE TABLEpartition_table PARTITION OF main_table FOR VALUES WITH (MODULUS num1, REMAINDER num2);

私たちのパーティションは次のとおりです。

「main_table」の場合、以下に示すエントリが含まれます。

作成されたパーティションについては、そのエントリにすぐにアクセスして、パーティション分割が機能していることを確認できます。

結論

PostgreSQL パーティションは、データベースを最適化して時間を節約し、信頼性を高める便利な方法です。利用可能なさまざまなオプションを含め、パーティショニングについて詳しく説明しました。さらに、パーティションの実装方法に関する例も提供しました。ぜひ試してみてください!