このトピックでは、自動インクリメント列に関連する概念と、PolarDB-Xデータベースの自動インクリメント列の仕組みについて説明します。
基本概念
PolarDB-XはAUTO_INCREMENT
キーワードをサポートしており、列を自動インクリメント列として指定できます。 PolarDB-Xは、自動インクリメント列のグローバル一意の値を自動的に生成します。
- データを挿入するために実行される
INSERT
ステートメントで自動インクリメント列の値が指定されていない場合、または自動インクリメント列に指定された値が0またはNULLの場合、PolarDB-Xは自動インクリメント列にグローバルに一意の値を自動的に生成します。 - データを挿入するために実行される
INSERT
ステートメントで自動インクリメント列の値が指定されている場合、PolarDB-Xは現在の操作で指定された値を使用し、その後の操作で自動インクリメント列の指定された値よりも大きい後続の値を自動的に生成します。 - Autoモードのデータベースの自動インクリメント列は、一意性、単調性、値の連続性など、MySQLデータベースの自動インクリメント列のすべてのプロパティをサポートします。
説明 AUTOモードおよびDRDSモードのデータベースについては、「AUTOモードおよびDRDSモードのデータベース」をご参照ください。
自動インクリメント列の仕組み
PolarDB-Xでテーブルを作成するときに列にAUTO_INCREMENT
キーワードを指定すると、PolarDB-Xは自動的にシーケンスを作成し、そのシーケンスをテーブルの自動インクリメント列に関連付けて、自動インクリメント列にグローバルに一意の値を生成します。 テーブルにデータを挿入すると、関連付けられたシーケンスを使用してグローバル一意の値が生成され、その値が自動インクリメント列に挿入されます。
PolarDB-Xは、データベースのパーティショニングモードに基づいて、テーブル内の自動インクリメント列に特定の型のシーケンスを自動的に作成します。
- テーブルを含むデータベースがAUTOモードの場合、PolarDB-Xは自動的にNEWシーケンスを作成し、そのシーケンスをテーブルの自動インクリメント列に関連付けます。 NEWシーケンスに関連付けられている自動インクリメント列には、次のプロパティがあります。
- 一意性: 自動インクリメント列の値はグローバルに一意です。
- 単調性: 自動インクリメント列の値は、グローバルに単調に増加する値です。
- 値の連続性: 自動インクリメント列の値は連続しています。 例外が発生した場合、またはインスタンスが再起動された場合、自動インクリメント列の値は連続しない値になる可能性があります。
- 互換性: 自動インクリメント列には、MySQLデータベースの自動インクリメント列のすべてのプロパティがあります。
- テーブルを含むデータベースがDRDSモードの場合、PolarDB-Xは自動的にGROUPシーケンスを作成し、そのシーケンスをテーブルの自動インクリメント列に関連付けます。 GROUPシーケンスに関連付けられている自動インクリメント列には、次のプロパティがあります。
- 一意性: 自動インクリメント列の値はグローバルに一意です。
- 単調性: 各計算ノードによって生成される自動インクリメント列の値は、単調に増加する値です。 計算ノードにわたって生成される値は、単調に増加する値でなくてもよい。
- 値の連続性: 計算ノード接続セッションで使用され、キャッシュ期間内のシーケンス値は連続しています。 例外が発生した場合、またはインスタンスが再起動された場合、自動インクリメント列の値は連続しない値になる可能性があります。
- 互換性: 自動インクリメント列は、MySQLデータベースの自動インクリメント列の一意性プロパティをサポートし、MySQLデータベースの自動インクリメント列の他の機能はサポートしません。
テーブルの自動インクリメント列に関連付けるシーケンスのタイプを指定することもできます。 詳細については、「シーケンスをテーブル内の自動インクリメント列に関連付ける」をご参照ください。 さまざまな種類のシーケンスのプロパティと、さまざまな種類のシーケンスが使用される一般的なシナリオについては、「概要」をご参照ください。