すべてのプロダクト
Search
ドキュメントセンター

PolarDB:KEY パーティショニング

最終更新日:Mar 29, 2026

自然なパーティションキーが文字列、日付、または複合列である場合に、KEY パーティショニングを使用します。整数式を必要とする HASH パーティショニングとは異なり、KEY パーティショニングは非整数型の列および複数列から構成されるパーティションキーをサポートするため、実際の業務で使用されるスキーマの多くに適しています。

説明

PolarDB-X における KEY パーティショニングのルーティングアルゴリズムには MurmurHash3 が採用されており、これは MySQL の KEY パーティショニングアルゴリズムとは異なります。

KEY パーティショニングと HASH パーティショニングの違い

動作KEY パーティショニングHASH パーティショニング
パーティションキーの指定必須いいえ — パーティションキーを省略した場合、デフォルトでプライマリキーが使用されます。プライマリキーが存在しない場合は、一意キーが使用されますはい — 整数式または整数型の列を明示的に指定する必要があります
複数列のパーティションキーサポート(ベクターパーティションキー)サポートされません
サポートされるデータの型INT、STRING、DATE、DATETIME(およびそのサブタイプ)整数型のみ
パーティショニング関数サポートされませんサポートされます

詳細な比較については、「KEY パーティショニングと HASH パーティショニングの比較」をご参照ください。

構文

CREATE TABLE ...
PARTITION BY KEY(partition_column_list)
PARTITIONS number;

partition_column_list:
  column_name [, column_name ...]
パラメーター説明
partition_column_listパーティションキーとして使用する 1 つ以上の列です。省略した場合は、デフォルトでプライマリキーが使用されます。プライマリキーが存在しない場合は、一意キーが使用されます。
numberパーティション数です。最大値:8,192。

単一列のパーティションキー

id 列をパーティションキーとして、8 つのパーティションに分割します:

CREATE TABLE tb_k(
  id bigint NOT NULL AUTO_INCREMENT,
  bid int,
  name varchar(30),
  birthday datetime NOT NULL,
  PRIMARY KEY(id)
)
PARTITION BY KEY(id)
PARTITIONS 8;

ベクターパーティションキー(複数列)

bid および id を 2 列のパーティションキーとして使用し、8 つのパーティションに分割します:

CREATE TABLE tb_k(
  id bigint NOT NULL AUTO_INCREMENT,
  bid int,
  name varchar(30),
  birthday datetime NOT NULL,
  PRIMARY KEY(id)
)
PARTITION BY KEY(bid, id)
PARTITIONS 8;
重要

ベクターパーティションキーでは、行のルーティング先パーティションは先頭の列(本例では bid)のみによって決定されます。id などの残りの列はルーティングには使用されず、ホットデータのパーティション分割を支援するために存在します。クエリに先頭列(bid)に対する等価条件が含まれる場合、パーティションプルーニングが適用されます。

制限事項

サポートされるデータの型

カテゴリ
整数BIGINT、BIGINT UNSIGNED、INT、INT UNSIGNED、MEDIUMINT、MEDIUMINT UNSIGNED、SMALLINT、SMALLINT UNSIGNED、TINYINT、TINYINT UNSIGNED
日付および時刻DATETIME、DATE、TIMESTAMP
文字列CHAR、VARCHAR、BINARY
固定小数点DECIMAL(小数部の桁数は 0 である必要があります)

その他の制限

  • KEY パーティショニングでは、パーティショニング関数はサポートされません。

  • デフォルトでは、パーティションテーブルのパーティション数は最大 8,192 までです。

  • デフォルトでは、パーティションキーに含められる列数は最大 5 列までです。

データのディストリビューション

KEY パーティショニングは、ハッシュ衝突率が低く高性能な MurmurHash3 を使用します。パーティションキーが 3,000 を超える一意の値を持つ場合、パーティション全体へのディストリビューションは均等になります。一意の値が多いほど、ディストリビューションはより均等になります。