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

PolarDB:概要

最終更新日:Mar 29, 2026

PolarDB-X 1.0 シーケンスは、MySQL BIGINT 型 (符号付き 64 ビット整数) のグローバルに一意な数値を生成します。シーケンスを使用して、分散ノード全体でプライマリキー列と一意のインデックス列に値を設定します。

シーケンスタイプの選択

PolarDB-X 1.0 は 4 種類のシーケンスタイプをサポートしています。ワークロードが連続した値、インスタンス間の一意性、または最高のパフォーマンスを必要とするかどうかに基づいて選択してください。

タイプグローバルに一意連続単調増加同じセッション内で単調増加非単一障害点データの型可読性ユニット化
グループシーケンス (GROUP)はいいいえいいえはいはいすべての整数型いいえ
ユニットグループシーケンス (GROUP)はいいいえいいえはいはいすべての整数型はい
時間ベースシーケンス (TIME)はいいいえマクロレベルのみはいはいBIGINT のみいいえ
シンプルシーケンス (SIMPLE)はいはいはいはいいいえすべての整数型いいえ

要件に合ったタイプを選択してください:

  • ほとんどのワークロード — グループシーケンスを使用します。これはデフォルトのタイプであり、最高のパフォーマンスを提供し、単一障害点 (SPOF) を排除します。値はグローバルに一意ですが、ギャップが含まれる場合があります。

  • インスタンス間またはデータベース間の一意性 — ユニットグループシーケンスを使用します。これは、ユニット化機能でグループシーケンスを拡張するため、複数のインスタンスまたはデータベース間で値の一意性が維持されます。

  • 連続しない ID を持つ高スループットの挿入 — 時間ベースシーケンスを使用します。値はデータベースから読み取られたり書き込まれたりしないため、書き込みオーバーヘッドはありません。シーケンスはマクロレベルでは単調増加しますが、ミクロレベルではそうではありません。

  • 厳密に連続した値 — ワークロードがギャップのない単調増加 ID を必要とする場合にのみ、シンプルシーケンスを使用します。シンプルシーケンスは、生成されたすべての値を永続ストレージに書き込むため、ボトルネックと SPOF リスクが発生します。連続した ID が厳密な要件である場合にのみ使用してください。

基本概念

これらの用語を理解することで、上記の比較表を解釈するのに役立ちます。

  • 連続: 現在の値が *n* の場合、次の値は *n + 1* である必要があります。

  • 単調増加: 現在の値が *n* の場合、次の値は *n* より大きい必要があります。

  • マクロレベルでは単調増加、ミクロレベルでは非単調増加: 全体的な傾向は増加していますが、個々の値は順不同で到着する場合があります。例: 1, 3, 2, 4, 5, 7, 6, 8, ...

  • 単一障害点: 単一障害点 (SPOF) のリスクが存在します。

  • ユニット化機能: 複数のインスタンスまたは複数のデータベース間で一意な数値シーケンスを生成する機能。

各シーケンスタイプの仕組み

グループシーケンス (デフォルト)

グループシーケンスは、複数の DRDS ノードにわたって値の生成を分散します。各ノードは一度にデータベースから値のセグメントを取得し、そのセグメントからローカルに値を割り当てます。ネットワーク切断が発生した場合、またはセグメントが使い果たされる前に接続が閉じられた場合、そのセグメント内の残りの値はスキップされます。これが、グループシーケンス値が非連続である理由です。

利点: SPOF なし、優れたパフォーマンス、すべての整数データ型をサポート。

制限事項: 値は非連続です。実際の開始値は、START WITH で指定された値よりも常に大きくなります。値は循環的ではありません。

: START WITH 100000 の場合、グループシーケンスは 200001, 200002, 200003, 200004, 100001, 100002, 100003... を生成する可能性があります。200004 と 100001 の間の値は、破棄されたセグメントにあったため欠落しています。

ユニットグループシーケンス

ユニットグループシーケンスは、ユニット化機能で拡張されたグループシーケンスと同じように機能します。ユニットインデックスとユニット数を構成して、インスタンスまたはデータベース全体でグローバルシーケンス空間をパーティション分割します。各ユニットは空間の重複しないサブセットを占有するため、PolarDB-X は 2 つの異なるユニットに対して同じ値を生成することはありません。

一貫した動作の要件:

  • 同じシーケンス空間を共有するすべてのユニットグループシーケンスは、同じユニット数を持つ必要があります。

  • 各シーケンスは、個別のユニットインデックスを持つ必要があります。

  • 1 つのユニットのみを構成する場合、動作はグループシーケンスと同一です。

利点: すべてのグループシーケンスの利点に加えて、複数のインスタンスまたはデータベース間での一意性。

制限事項: 値は非連続です。実際の開始値は、START WITH よりも常に大きくなります。値は循環的ではありません。

説明

ユニットグループシーケンスは、DRDS V5.2.7-1606682 以降 (2018年4月27日リリース) および V5.3.3-1670435 以降 (2018年8月15日リリース) で利用可能です。

時間ベースシーケンス

時間ベースシーケンスは、タイムスタンプ、ノード ID、およびシリアル番号から各値を構成します。システムは値を生成するときにデータベースから読み取ったり書き込んだりすることはありません。シーケンス名とタイプのみが保存されます。これにより、時間ベースシーケンスは最高スループットのオプションとなります。

値はグローバルに一意であり、マクロレベルでは自動インクリメントされます。ミクロレベルでは、同時実行ノードからの値がわずかに順不同で到着する場合があります。

利点: SPOF なし、優れたパフォーマンス、値の生成中にデータベース書き込みなし。

制限事項: 値は非連続です。START WITHINCREMENT BYMAXVALUE、および CYCLE/NOCYCLE パラメーターはサポートされていません。AUTO_INCREMENT 列に使用する場合、列は BIGINT 型である必要があります。

値の例: 776668092129345536, 776668098018148352, 776668111578333184, 776668114812141568…

説明

時間ベースシーケンスは、DRDS V5.2.8-15432885 以降 (2018年12月27日リリース) および V5.3.6-15439241 以降 (2018年12月29日リリース) で利用可能です。

シンプルシーケンス

シンプルシーケンスは、生成されたすべての値をデータベースの永続ストレージに書き込みます。これにより、SPOF によって引き起こされる再起動後でも、値はグローバルに一意で連続し、単調増加することが保証され、生成は最後に永続化された値から再開されます。

シンプルシーケンスは、INCREMENT BYMAXVALUE、および CYCLE/NOCYCLE をサポートする唯一のタイプです。

利点: 連続した単調増加値。最大値、ステップサイズ、および循環生成をサポートします。

制限事項: 値の生成ごとに永続書き込みが行われるため、SPOF の影響を受けやすく、パフォーマンスが低く、ボトルネックが発生します。連続した ID が厳密な要件である場合にのみ使用してください。

: START WITH 100000 とステップサイズ 1 の場合、シンプルシーケンスは 100000, 100001, 100002, 100003, 100004, ..., 200000, 200001, ... を生成します。これは再起動後でもギャップがありません。

使用モード

タイプに関係なく、シーケンスは 2 つのモードで使用できます。

  • 明示的シーケンス: DDL 構文を使用してシーケンスを作成および管理します。SELECT seq.nextval を使用して次の値を取得します。ここで seq はシーケンス名です。明示的シーケンスは独立してクエリおよび変更できます。

  • 暗黙的シーケンス: プライマリキー列に AUTO_INCREMENT 属性を追加します。PolarDB-X 1.0 は基盤となるシーケンスを自動的に作成および管理します。