SAPHANA管理者-テーブルパーティション
パーティショニングを使用すると、複数のホストシステムで列ストアテーブルをより小さなテーブルに分割できます。パーティショニングを使用して、テーブルをより小さく管理しやすい部分に分割することもできます。パーティショニングは、DMLSQLステートメントを使用して実行できます。
テーブルがパーティション化されると、パーツごとに異なる行のセットが含まれ、パーティション化は、ハッシュパーティション化、シングルレベル、またはマルチレベルのパーティション化などのさまざまなアルゴリズムに基づいて実行できます。
テーブルパーティショニングを使用する利点は次のとおりです。
分割剪定
クエリを特定のパーティションで分析できるかどうかを判断できます。この方法を使用すると、システムの負荷を軽減し、応答時間を改善できます。
Example−年に基づいてテーブルを分割すると、クエリが実行され、特定の年のデータが分析されます。特定のパーティションを使用できるため、クエリのパフォーマンスが向上します。
負荷分散
複数のホストで個々のパーティションを分割できるため、クエリが単一のサーバーで処理されないため、テーブルパーティションをホストしているすべてのサーバーでの負荷分散が向上します。
サイズ制限
列ストアテーブルでは、入力できる最大行数は約20億です。列テーブルの行を複数のパーティションに分散することでこれを克服できるため、サイズ制限はパーティションごとに20億に増加します。
改善されたデルタマージ操作
デルタマージ中に、一部のパーティションについてのみデータが変更される場合、デルタマージでマージする必要のあるパーティションは少なくなります。
クエリの並列処理
パーティションを使用すると、複数のクエリを並行して実行できるため、応答時間が改善されます。
次に、パーティショニングのタイプについて説明します。
シングルレベルパーティショニング
SAPHANAシステムで利用できるシングルレベルパーティショニングにはさまざまなタイプがあります-
- ハッシュ分割
- ラウンドロビン分割
- 範囲分割
ハッシュパーティショニングでは、負荷分散を実行するために行が均等に分散されます。このパーティショニングタイプのテーブルコンテンツに関する詳細情報は必要ありません。
ハッシュパーティショニングと比較すると、ラウンドロビンパーティショニングでは、行が各パーティションに均等に分散され、新しい行が各パーティションに均等に割り当てられます。
ラウンドロビンを使用してテーブルの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
これにより、列に4つのパーティションが作成されます a そして b、および少なくとも1つの列を指定する必要があります。
範囲分割
範囲パーティショニングでは、特定の値専用のパーティションを作成し、列をパーティショニングするためのテーブルの内容に関する深い知識が必要です。
Example −暦月ごとに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つはパーティション範囲1〜10、2つ目は10〜20、3つ目は値50、4つ目は他のすべての値です。
マルチレベルパーティショニング
マルチレベルパーティショニングでは、HASHおよびRANGEシングルレベルパーティショニングの制限を克服して、キー列をパーティショニング列として使用できます。マルチレベルパーティショニングを使用すると、主キーではない列をパーティショニングできます。マルチレベルパーティショニングの最も一般的なタイプはHASH-Range Partitioning。
ハッシュ範囲マルチレベルパーティショニングでは、最初のレベルでハッシュパーティショニングを実装して負荷分散を実装し、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)
最初のレベルでハッシュパーティショニングを使用する代わりに、ラウンドロビンパーティショニングを使用することもできます。これは、 Round Robin-Range multilevel partitioning。
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)