Sap-hana-administration-table-partition
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)