このトピックでは、シーケンスの制限と問題のトラブルシューティング方法について説明します。
新しいシーケンス
- 新しいシーケンスは、カーネルバージョンがV5.4.14以降のPolarDB-XインスタンスのAUTOデータベースでのみ使用できます。
- 新しいシーケンスのINCREMENT BY、MAXVALUE、およびCYCLEまたはNOCYCLEパラメーターを指定できるのは、PolarDB-X 5.4.17以降のインスタンスのみです。
- 新しいシーケンスを含むPolarDB-Xインスタンスのカーネルバージョンを、新しいシーケンスをサポートしないバージョンにダウングレードする前に、すべての新しいシーケンスをグループシーケンスに変換する必要があります。 次の手順を実行して、すべての新しいシーケンスをグループシーケンスに変換します。
- インスタンスに新しいシーケンスが存在するかどうかを確認するには、INFORMATION_SCHEMA.SEQUENCESビューを参照します。
- インスタンスに新しいシーケンスが存在する場合は、
CONVERT ALL sequences FROM new TO GROUP
ステートメントを実行して、インスタンス内のすべての新しいシーケンスをグループシーケンスに変換します。 詳細については、「CONVERTシーケンス」をご参照ください。
- 新しいシーケンスでは、グローバルメタサービス (GMS) を使用して自動増分列の値を割り当てます。 パフォーマンスを確保するために、GMSはいくつかの値をキャッシュする必要があります。 更新、フェールオーバー、構成変更、移行などの操作をGMSで実行する場合、操作の実行前にキャッシュされていた値は破棄され、シーケンス内でスキップされます。
グループシーケンス
- デフォルトでは、カーネルバージョンがV5.4.13以前のPolarDB-Xインスタンスのデータベースと、カーネルバージョンがV5.4.14以降のPolarDB-XインスタンスのDRDSモードのデータベースでグループシーケンスが使用されます。
- グループシーケンスの開始値は100001です。 これは、グループ系列の最小値が100001であることを示す。
- 複数のユニットを含むグループシーケンスは、別のタイプのシーケンスに変換することはできず、他のタイプのシーケンスは、複数のユニットを含むグループシーケンスに変換することはできない。 複数の単位を含むグループシーケンスのSTART WITHパラメーターの値のみを変更できます。 シーケンスを定義するために使用される他のパラメーターの値は変更できません。
- 同じグループシーケンスに属するユニットシーケンスの定義では、unit COUNTパラメータの値は同じでなければならず、INDEXパラメータの値は異なる必要があります。 これにより、シーケンス値が複数のインスタンスまたはデータベースでグローバルに一意になります。
- 次の操作を実行しないことをお勧めします。テーブルの作成時に自動的にテーブルに関連付けられる
AUTO_SEQ_
というプレフィックスが付いたグループシーケンスを使用して、NEXTVALを取得し、insert
を使用して取得した値を明示的な値としてテーブルに挿入します。 上記の操作を実行すると、グループシーケンスが頻繁にキャッシュを更新し、値がすぐに増加する可能性があります。
タイムシーケンス
タイムシーケンスを使用してテーブルの自動インクリメント列の値を生成する場合は、列のデータ型がBIGINTである必要があります。