KEY パーティショニングは、MySQL の内部ハッシュ関数を用いてデータを複数のパーティションに分散します。ハッシュパーティショニングとは異なり、KEY パーティショニングでは複数のパーティションキー列およびより広範な列型をサポートします。
構文
CREATE TABLE [schema.]table_name
table_definition
PARTITION BY [LINEAR] KEY(column_list) [PARTITIONS number]
(partition_definition [, partition_definition] ...);partition_definition は以下のとおりです:
PARTITION partition_nameパラメーター
| パラメーター | 説明 |
|---|---|
column_list | パーティションキー列。ゼロ個以上の列を指定できます。サポートされる型:INT、文字列型、DATE、TIME、DATETIME。 |
partition_name | パーティション名。テーブル内で一意である必要があります。 |
number | パーティション数。 |
KEY パーティショニングの仕組み
KEY パーティショニングは、MySQL と同じ内部ハッシュアルゴリズムを使用します。また、複数の列および以下のデータ型(INT、文字列型、DATE、TIME、DATETIME)をサポートします。
column_list を省略した場合、PolarDB は以下のフォールバック順序を適用します:
プライマリキーがパーティションキーとして使用されます。
プライマリキーが存在しない場合は、代わりに一意キーが使用されます。
KEY パーティショニングでは、LINEAR KEY 拡張タイプもサポートされます。
例
単一列によるパーティショニング
販売テーブルを s_id 列で 11 個のパーティションに分割します:
CREATE TABLE sales_key
(
s_id VARCHAR(20),
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT,
PRIMARY KEY(s_id)
) PARTITION BY KEY (s_id)
PARTITIONS 11;LINEAR KEY の使用
線形キーによるパーティションテーブルを作成するには、LINEAR KEY を使用します:
CREATE TABLE sales_linear_key
(
s_id VARCHAR(20),
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT,
PRIMARY KEY(s_id)
) PARTITION BY LINEAR KEY (s_id)
PARTITIONS 11;