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

PolarDB:手動パーティショニング

最終更新日:Mar 28, 2026

PolarDB for Xscale の手動パーティショニングでは、データノード間でデータをどのように分散させるかを明示的に制御できます。これは、高い同時実行性とスループットを必要とするコアアプリケーションに最適で、ワークロードの読み取り/書き込みパターンに基づいてパーティション戦略を選択します。

手動パーティショ toning には、分散データベースの仕組みに関する知識が必要です。テーブルスキーマを設計する前に、ワークロードが読み取り負荷が高いか、書き込み負荷が高いか、またはその両方が混在しているかを判断してください。これにより、使用するテーブルタイプが決まります。

AUTO データベースの作成

手動パーティショニングを使用するには、AUTO モードでデータベースを作成します:

CREATE DATABASE autodb1 MODE='auto'

テーブルタイプ

PolarDB for Xscale は、手動パーティショニング用に 3 つの論理テーブルタイプをサポートしています。それぞれが異なる物理トポロジーを持ち、特定のワークロードに適しています。

プライマリワークロードに基づいてテーブルタイプを選択します:

  • 小規模なデータセット、低い同時実行数 — 非パーティション化テーブルを使用

  • 読み取り負荷が高く、更新が少ない — ブロードキャストテーブルを使用

  • 大規模なデータセット、高い同時実行性とスループット — パーティションテーブルを使用

テーブルタイプ物理トポロジー最適な用途読み取り/書き込み動作
非パーティション化テーブル単一のデータノード上の 1 つの物理テーブルデータ量が少なく、同時実行数が低い小規模なテーブル読み取りと書き込みは 1 つのデータノードによって処理されます。
ブロードキャストテーブルデータノードごとに 1 つのレプリカ。レプリカは同期を維持します。設定テーブルや、読み取り負荷が高く更新が少ないその他のデータ読み取りの負荷分散:読み取りはデータノード間で分散されます。書き込み増幅:整合性を維持するために、すべての書き込みはすべてのレプリカに伝播する必要があります。
パーティションテーブルデータノード間に分散された複数のパーティション。各パーティションは 1 つの物理テーブルにマッピングされます。高い同時実行性とスループットを持つ大規模なデータセット読み取りと書き込みは、パーティションキー列に基づいてターゲットのデータノードにルーティングされ、負荷が自動的に分散されます。
警告

ブロードキャストテーブルは、すべてのデータノードにわたってすべての書き込みを増幅させます。変更が頻繁に行われないテーブルにのみ使用してください。書き込みが頻繁なテーブルには、代わりにパーティションテーブルを使用してください。

重要

パーティションテーブルを作成する前に、パーティションキー列を慎重に選択してください。パーティションキーは、各クエリをどのデータノードが処理するかを決定します。パーティションキーでフィルターするクエリは、関連するパーティションのみにルーティングされるため、スキャンされるデータ量が大幅に削減され、パフォーマンスが向上します。たとえば、orders テーブルを customer_id でパーティション化した場合、WHERE customer_id = 42 という条件のクエリは、その顧客のデータを保持するパーティションのみをスキャンし、すべてのパーティションをスキャンすることはありません。

テーブルの作成

方法 1:テーブルタイプを明示的に指定

非パーティション化テーブルの作成

構文

CREATE TABLE xxx (...)
SINGLE

CREATE TABLE sin_tbl(
 id bigint not null auto_increment,
 bid int,
 name varchar(30),
 birthday datetime,
 primary key(id)
)
single ;

ブロードキャストテーブルの作成

構文

CREATE TABLE xxx (...)
BROADCAST

CREATE TABLE bro_tbl(
 id bigint not null auto_increment,
 bid int,
 name varchar(30),
 birthday datetime,
 primary key(id)
)
broadcast ;

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

完全な構文とオプションについては、「手動でパーティションテーブルを作成する (AUTO モード)」をご参照ください。

方法 2:自動パーティショニングをグローバルに無効化

デフォルトでは、PolarDB for Xscale は新しいテーブルを自動的にパーティション化します。毎回 SINGLE を指定せずに非パーティション化テーブルを作成するには、グローバル変数を使用してこの動作を無効化します:

SET GLOBAL AUTO_PARTITION=false;

この変数を設定すると、新しいテーブルはデフォルトで非パーティションのテーブルとして作成され、SINGLE キーワードは不要になります。

参考資料