Sap-hana-administration-table-partition

提供:Dev Guides
移動先:案内検索

SAP HANA Admin-テーブルパーティション

パーティショニングを使用すると、複数のホストシステムで列ストアテーブルを小さなテーブルに分割できます。 パーティションを使用して、テーブルをより管理しやすい小さな部分に分割することもできます。 パーティション化は、DML SQLステートメントを使用して実行できます。

表がパーティション化されると、各部分に異なる行セットが含まれ、ハッシュパーティション化、シングルレベルまたはマルチレベルパーティション化などの異なるアルゴリズムに基づいてパーティション化を実行できます。

以下は、テーブルパーティションを使用する利点です-

パーティショニングプルーニング

特定のパーティションでクエリを分析できるかどうかを判断できます。 この方法を使用すると、システムの負荷を軽減し、応答時間を改善できます。

-年に基づいてテーブルをパーティション分割すると、特定の年のデータを分析するためにクエリが実行されます。 特定のパーティションを使用できるため、クエリのパフォーマンスが向上します。

負荷分散

複数のホストで個々のパーティションを分割できるため、クエリは単一のサーバーで処理されないため、テーブルパーティションをホストするすべてのサーバーで負荷分散が向上します。

サイズ制限

列ストアテーブルでは、入力できる最大行数は約20億です。 これを克服するには、列テーブルの行を複数のパーティションに分散することにより、パーティションごとにサイズ制限を20億に増やします。

改善されたデルタマージ操作

デルタマージ中に、一部のパーティションのデータのみが変更された場合、デルタマージでマージする必要のあるパーティションは少なくなります。

クエリの並列処理

パーティションを使用すると、複数のクエリを並行して実行できるため、応答時間が改善されます。

パーティショニングの種類について説明しましょう。

シングルレベルパーティション

SAP HANAシステムで使用可能な単一レベルのパーティション分割にはさまざまなタイプがあります-

  • ハッシュ分割
  • ラウンドロビン分割
  • 範囲分割

ハッシュパーティショニングでは、ロードバランシングを実行するために行が均等に分散されます。 このパーティショニングタイプでは、テーブルコンテンツに関する詳細情報は必要ありません。

ハッシュパーティション分割と比較して、ラウンドロビンパーティション分割では、行が各パーティションに均等に分散され、新しい行が各パーティションに均等に割り当てられます。

ラウンドロビンを使用してテーブルの4つのパーティションを作成するには、次のSQLクエリを使用できます。 主キーを定義しないでください。

CREATE COLUMN TABLE TABLENAME (a INT, b INT, c INT)
PARTITION BY ROUNDROBIN PARTITIONS 4

このコマンドは、テーブルの4つのパーティションを作成します。

コマンド

CREATE COLUMN TABLE Table_Name (a INT, b INT, c INT, PRIMARY KEY (a,b))
PARTITION BY HASH (a, b) PARTITIONS 4

これにより、列 a および b に4つのパーティションが作成されます。少なくとも1つの列を指定する必要があります。

範囲分割

範囲分割では、特定の値に対して専用のパーティションを作成します。列を分割するためのテーブルの内容に関する深い知識が必要です。

-暦月ごとに1つのパーティションを作成します。

CREATE COLUMN TABLE TABLE_NAME (a INT, b INT, c INT, PRIMARY KEY (a,b))
PARTITION BY RANGE (a)
(PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20,
PARTITION VALUE = 50, PARTITION  OTHERS)

これにより4つのパーティションが作成されます。1〜10のパーティション範囲に1つ、10〜20の2 ^ nd ^、値50に3 ^ rd ^、その他のすべての値に4 ^ th ^です。

マルチレベルパーティショニング

マルチレベルパーティション分割では、HASHおよびRANGEシングルレベルパーティション分割の制限を克服して、キー列をパーティション分割列として使用できます。 マルチレベルパーティション分割を使用すると、主キーではない列をパーティション分割できます。 マルチレベルパーティショニングの最も一般的なタイプは HASH-Range Partitioning です。

Hash-Rangeマルチレベルパーティショニングでは、負荷分散を実装するために第1レベルでハッシュパーティショニングを実装し、第2レベルで時間ベースのパーティショニングを実装するためにレンジパーティショニングを実装します。

CREATE COLUMN TABLE Table_name (a INT, b INT, c INT, PRIMARY KEY (a,b))
PARTITION BY HASH (a, b) PARTITIONS 4,
RANGE (c) (PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20)

最初のレベルでハッシュパーティション分割を使用する代わりに、ラウンドロビンパーティション分割を使用することもできます。これは、*ラウンドロビン範囲マルチレベルパーティション分割*と呼ばれます。

CREATE COLUMN TABLE Table_name (a INT, b INT, c INT)
PARTITION BY ROUNDROBIN PARTITIONS 4,
RANGE (c) (PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20)