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

PolarDB:HASH

最終更新日:Mar 29, 2026

ハッシュパーティショニングは、パーティションキーから導出される式に剰余演算を適用することで、行を複数のパーティションに分散します。範囲条件やリスト条件を必要とせず、固定数のパーティションにデータを均等に分散させる場合に使用します。

構文

CREATE TABLE ... PARTITION BY [LINEAR] HASH(expr) [PARTITIONS number]
( PARTITION partition_name1,
  PARTITION partition_name2, ...);

パラメーター

パラメーター説明
exprパーティション式です。INT 型の値を返す必要があります。文字列型はサポートされていません。
numberハッシュパーティションの数です。
partition_nameパーティション名です。テーブル内で一意である必要があります。

仕組み

各行がどのパーティションに属するかを決定するために、PolarDB はパーティション式を評価し、以下の数式を適用します:

MOD(partition_expression, number_of_partitions)

たとえば、パーティション数が 7 で、パーティション式の値が 15 の場合、その行はパーティション MOD(15, 7) = 1 に割り当てられます。

HASH と LINEAR HASH の比較

PolarDB では、2 種類のハッシュパーティショニング方式がサポートされています。

HASHLINEAR HASH
アルゴリズムハッシュ関数値の剰余演算線形・2 次・指数関数的アルゴリズム

構文上の唯一の違いは、LINEAR キーワードが PARTITION BY 句に含まれるかどうかです。

ハッシュパーティションテーブルの作成

CREATE TABLE sales_hash
(
  s_id        INT,
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT,
  PRIMARY KEY(s_id)
) PARTITION BY HASH (s_id)
PARTITIONS 7;

このコマンドにより、7 つのパーティションを持つ sales_hash テーブルが作成されます。各行は MOD(s_id, 7) に基づいてパーティションに割り当てられます。

LINEAR HASH パーティションテーブルの作成

CREATE TABLE sales_linear_hash
(
  s_id        INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT,
  PRIMARY KEY(s_id)
) PARTITION BY LINEAR HASH (s_id)
PARTITIONS 7;

このコマンドにより、7 つのパーティションを持つ sales_linear_hash テーブルが作成され、パーティションメンテナンスを高速化するための線形・2 次・指数関数的アルゴリズムが適用されます。