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

PolarDB:AUTO モードデータベースと DRDS モードデータベース

最終更新日:Mar 29, 2026

PolarDB-X は、AUTO モードと DRDS モードの 2 つのデータベースモードをサポートしています。AUTO モードは、新しいアプリケーション向けの最新のデフォルトモードであり、自動パーティショニング、エラスティックスケーリング、および豊富なパーティション管理機能を提供します。DRDS モードは、古いバージョンの PolarDB-X から移行されたアプリケーションとの互換性のために維持されているレガシーなシャーディングモデルです。

新しいアプリケーションには AUTO モードを使用してください。PolarDB-X 1.0 から移行する場合も、移行先として AUTO モードが推奨されます。

仕組み

PolarDB-X データベースを作成する際、MODE パラメーターによってテーブルのパーティショニング方法が決まります:

  • AUTO モード — テーブルはパーティションテーブルになります。PolarDB-X は自動的にパーティションキーを選択し、レンジベースの一貫性ハッシュアルゴリズムを使用して、パーティション間でデータを均等に分散します。標準の MySQL CREATE TABLE 構文がそのまま機能します。PolarDB-X V5.4.13 以降で利用可能です。

  • DRDS モード — テーブルはシャードテーブルになります。PolarDB-X 固有のシャーディング構文を使用して、データベースシャードキーとテーブルシャードキーを指定します。シャードキーが指定されていない場合、非パーティションテーブルが作成されます。これは、CREATE DATABASEMODE を省略した場合のデフォルトです。

1 つの PolarDB-X インスタンスに、両方のモードのデータベースを含めることができます。

注意事項

  • CREATE DATABASEMODE='AUTO' を指定して、AUTO モードのデータベースを作成します。

  • MODE を省略すると、DRDS モードのデータベースが作成されます。

  • データベースの作成後は、そのモードを変更することはできません。

  • Standard Edition の PolarDB-X クラスターでは、AUTO モードのデータベースを作成できません。

  • AUTO モードのデータベースでは、標準の MySQL パーティショニング構文のみを使用してください。DRDS シャーディング構文はサポートされていません。

  • DRDS モードのデータベースでは、DRDS シャーディング構文のみを使用してください。MySQL パーティショニング構文はサポートされていません。

データベースの作成

MODE パラメーターを使用して、作成時にデータベースモードを設定します。

MODEデータベースモードデフォルトか?テーブル構文
'AUTO'AUTO モードいいえ標準の MySQL CREATE TABLE。パーティションテーブルを作成します
'DRDS'DRDS モードはいPolarDB-X シャーディング構文。シャードテーブルを作成します

AUTO モード:

CREATE DATABASE auto_db MODE='AUTO';

このデータベースで作成されたテーブルはパーティションテーブルです。詳細については、「CREATE TABLE (AUTO モード)」および「CREATE DATABASE」をご参照ください。

DRDS モード:

-- どちらの形式でも DRDS モードのデータベースが作成されます
CREATE DATABASE drds_db MODE='DRDS';
CREATE DATABASE drds_db;

このデータベースで作成されたテーブルはシャードテーブルです。詳細については、「CREATE TABLE (DRDS モード)」および「CREATE DATABASE」をご参照ください。

AUTO モードでのテーブルのパーティショニング

AUTO モードは、自動パーティショニングと手動パーティショニングの両方をサポートしています。

自動パーティショニング

パーティショニング句を指定せずに、標準の CREATE TABLE 文を実行します。PolarDB-X はパーティションキーを選択し、テーブルとそのインデックスの両方を水平にパーティショニングします。

CREATE TABLE tb (a INT, b INT, PRIMARY KEY(a));

AUTO モードでは、PolarDB-X はこのテーブルをプライマリキーで自動的にパーティショニングします:

SHOW FULL CREATE TABLE tb\G
*************************** 1. row ***************************
       TABLE: tb
CREATE TABLE: CREATE PARTITION TABLE `tb` (
    `a` int(11) NOT NULL,
    `b` int(11) DEFAULT NULL,
    PRIMARY KEY (`a`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
PARTITION BY KEY(`a`)
PARTITIONS 16
1 row in set (0.01 sec)

DRDS モードのデータベースで同じ文を実行すると、代わりに非パーティションテーブルが作成されます。

手動パーティショニング

パーティションキーとポリシーを明示的に指定します。AUTO モードは、標準の MySQL 構文を使用して、HASH、KEY、RANGE、RANGE COLUMNS、LIST、LIST COLUMNS パーティショニングをサポートしています。

-- 4 つのパーティションを持つ HASH パーティショニング
CREATE TABLE tb (a INT, b INT, PRIMARY KEY(a))
    PARTITION BY HASH(a) PARTITIONS 4;

DRDS モードでのテーブルのシャーディング

DRDS モードでは、DBPARTITION BYTBPARTITION BY を使用した PolarDB-X 固有のシャーディング構文を使用します。HASH ベースのシャーディングのみがサポートされています。

CREATE TABLE tb (a INT, b INT, PRIMARY KEY(a))
    DBPARTITION BY HASH(a)
    TBPARTITION BY HASH(a)
    TBPARTITIONS 4;

ルーティングアルゴリズム

2 つのモードの主な違いは、データがパーティションにルーティングされる方法です。

AUTO モード:一貫性ハッシュ

AUTO モードは、レンジベースの一貫性ハッシュアルゴリズムを使用します。

利点:

  • すべてのハッシュ値を再計算することなく、パーティションの分割、マージ、移行をサポートします。

  • ホットデータの分割を可能にします:ホットパーティションを複数のパーティションに分割し、データノード間で再分散できます。

  • パーティションプルーニングは、プレフィックス条件、計算式 (pk = POW(2, 4))、および照合順序を意識した比較で機能します。

  • 結合操作のプッシュダウンは、パーティションの分割、マージ、移行中も維持されます。

制限事項:

  • 一貫性ハッシュアルゴリズムは剰余ハッシュよりも計算が複雑なため、ポイントセレクトのワークロードではスループットがわずかに低下する可能性があります。実際には、oltp_point_select クエリの秒間クエリ数 (QPS) は DRDS モードと同等です (詳細については、「パフォーマンスベンチマーク」をご参照ください)。

DRDS モード:剰余ハッシュ

DRDS モードは、ハッシュ値に対して物理テーブルシャード数で剰余演算を行い、データをルーティングします。

利点:

  • シンプルでオーバーヘッドの少ないルーティングアルゴリズムです。

制限事項:

  • シャード数を変更するには、すべてのデータのハッシュ値を再計算する必要があります。たとえば、4 シャードから 5 シャードにスケーリングすると、完全なデータ再ハッシュがトリガーされます。

  • ホットデータのパーティション分割はできません — ホットシャードを細分化することはできません。

  • RANGE および LIST パーティショニングはサポートされていません。

機能比較

AUTO モードは、DRDS モードに比べて大幅な機能追加がされています。以下の表は、全機能セットを網羅しています。

ヒント: どちらのモードを使用すべきかだけを知りたい場合は、「よくある質問」をご参照ください。
機能AUTO モードDRDS モード
パーティショニング
自動パーティショニング (パーティションキー不要)サポート非サポート
HASH および KEY パーティショニングサポート (一貫性ハッシュ)対応済み(ただし例外あり)
RANGE および RANGE COLUMNS パーティショニングサポート非サポート
LIST および LIST COLUMNS パーティショニングサポート非サポート
ベクトルパーティションキー (パーティションキーとして複数列)サポート非サポート
パーティションキーの照合順序サポート非サポート
非パーティションテーブルとブロードキャストテーブルサポートサポート
分散
透過的な分散 (デフォルトのプライマリキーパーティショニング)サポート非サポート
デフォルトのグローバルセカンダリインデックス (GSI)サポート — インデックステーブルはインデックスキー列によって自動的にパーティショニングされます非サポート
負荷分散サポート非サポート
ホットデータの分散サポート非サポート
パーティション管理
パーティションの作成、削除、変更サポート非サポート
パーティションの分割とマージ対応非サポート
パーティションの移行サポート非サポート
パーティションの切り捨てサポート非サポート
ホットデータパーティション分析近日公開予定非サポート
テーブルの変更
テーブルタイプの変更 (非パーティション、ブロードキャスト、またはパーティション)サポートサポート
パーティションの変更 (数、キータイプ、ポリシー)サポートサポート
自動スケーリング
スケーリング中の書き込み中断中断なし短い中断
スケーリング中の他の DDL 操作許可不許可
自動スケーリングとの互換性はいいいえ
ローカリティ
静的ストレージ分離 (データベース、テーブル、パーティション)サポートサポート (データベースとテーブルのみ)
動的ストレージ分離サポート非サポート
パーティションプルーニング
プレフィックスベースのプルーニング (例:a=100 を使用した PARTITION BY KEY(a,b,c))サポート非サポート
式における定数畳み込み (例:pk = POW(2, 4))サポート非サポート — パーティションキーは定数である必要があります
照合順序を意識した大文字小文字の区別と末尾スペースの処理サポート非サポート
その他
結合操作のプッシュダウンサポート (分割/マージ/移行中も維持)サポート
パーティション選択 (SELECT * FROM tb PARTITION (p1))サポート非サポート
Time to Live (TTL)サポート非サポート
AUTO_INCREMENTグローバルに一意、単調増加、かつ連続グローバルに一意。単調増加または連続しない場合がある

パフォーマンスベンチマーク

同じスケールで AUTO モード (パーティションテーブル) と DRDS モード (シャードテーブル) を比較した Sysbench ベンチマークテスト。

テスト環境:

  • インスタンスタイプ: polarx.x4.2xlarge.2e

  • コンピュートノード (CN): 16C64G × 2

  • データノード (DN): 16C64G × 2

  • バージョン: 5.4.13-16415631

テストデータ:

設定AUTO モード (パーティション)DRDS モード (シャード)
パーティション/シャード数32 パーティション32 物理テーブルシャード
パーティショニング句PARTITION BY HASH(id) PARTITIONS 32DBPARTITION BY HASH(id) TBPARTITION BY HASH(id) TBPARTITION 2
データ量1 億 6000 万行1 億 6000 万行

テストシナリオ:

  • oltp_point_select — パーティションキーを使用した等価条件のポイント読み取り

  • oltp_read_only — トランザクション内でパーティションキーを使用したポイント読み取りと小範囲読み取り

  • oltp_read_write — パーティションキーを使用したポイントおよび小範囲の読み取りと書き込み

結果:

  • oltp_point_select:パーティションテーブルの QPS はシャードテーブルと同等です。一貫性ハッシュアルゴリズムは剰余ハッシュよりも複雑ですが、ポイントルックアップではその差はごくわずかです。

  • oltp_read_only および oltp_read_write:小範囲クエリに対してパーティションプルーニングがトリガーされるため、パーティションテーブルの QPS はシャードテーブルよりも約 33% 高くなります。

よくある質問

AUTO モードと DRDS モードは、いつ使い分けるべきですか?

AUTO モードを使用してください。PolarDB-X V5.4.13 以降で利用可能で、最新の分散データベース機能をすべてサポートしています。アプリケーションを PolarDB-X 1.0 から移行する場合、AUTO モードが唯一サポートされているターゲットモードです。

AUTO モードでは、自動パーティショニングと手動パーティショニングのどちらを使用すべきですか?

自動パーティショニングから始めることを推奨します。標準の CREATE TABLE 構文で動作し、事前のパーティション計画は不要です。実際のクエリパターンが判明したら、必要に応じて ALTER PARTITION を実行してパーティションキーと数を調整します。テーブルの SQL アクセスパターンと結合関係がすでにわかっている場合にのみ、最初から手動パーティショニングに切り替えてください。

自動パーティショニングでは、いくつのパーティションが作成されますか?

デフォルトのパーティション数は、インスタンス作成時に指定されたノード数 × 8 として計算されます。2 ノードのインスタンスの場合、自動パーティショニングは 16 のパーティションを作成します。この数は、後でノードを追加しても変更されません。

新しいテーブルのデフォルトを変更するには、AUTO_PARTITION_PARTITIONS パラメーターを変更します。この変更は、インスタンス内のすべての新しいテーブルに影響します。既存のテーブルは変更されません。

重要

新しいテーブルが既存のテーブルと異なるパーティション数で作成された場合、それらの間の結合操作をプッシュダウンできなくなり、クエリのパフォーマンスが低下します。関連するテーブル間でパーティション数を一貫して設定してください。

既存の自動パーティションテーブルのパーティション数を変更できますか?

はい。新しい自動パーティションテーブルのパーティション数を変更するには、インスタンスの AUTO_PARTITION_PARTITIONS パラメーターを変更します。この変更は、変更後に作成されるすべての新しいテーブルに適用されます。詳細については、「ALTER TABLE を使用してテーブルパーティションを変更する (AUTO モード)」をご参照ください。

DRDS モードのデータベースを AUTO モードに変換するにはどうすればよいですか?

ご利用の PolarDB-X のバージョンに基づいて選択します。まずバージョンを確認してください。詳細については、「インスタンスのバージョンを表示する」をご参照ください。

  • V5.4.16 以降 (推奨): CREATE DATABASE LIKE または CREATE DATABASE AS を使用してデータベースを変換します。詳細については、「DRDS モードのデータベースを AUTO モードのデータベースに変換する」をご参照ください。

  • すべてのバージョン — DTS 移行: ターゲットインスタンスに AUTO モードのデータベースとテーブルを作成し、Data Transmission Service (DTS) を使用して DRDS モードのソースからデータを移行します。

  • すべてのバージョン — ダンプと復元: mysqldump を使用して DRDS モードのデータベースからデータ (CREATE TABLE 文を除く) をエクスポートします。ターゲットスキーマで AUTO モードのデータベースを作成し、source コマンドを使用してダンプをインポートします。

次のステップ