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 キーワードは不要になります。