OceanBaseデータベースは、主キー付きテーブルと主キーなしテーブルをサポートしています。
主キー(Primary Key)
主キーとは、データテーブル内で1行を一意に識別できる列の集合です。主キーは以下のルールを満たす必要があります:
値は
NULLまたは空の文字列にすることはできません。フルテーブル範囲で主キー列集合の値は一意である必要があります。
主キー付きテーブル
主キー付きテーブルとは、データテーブルに主キーが含まれるテーブルのことです。OceanBaseデータベースでは、以下のルールを満たす必要があります:
各データテーブルは最大1つの主キー列集合を持ちます。
主キー列の数は64列を超えてはならず、主キーのデータの総長は16KBを超えてはなりません。
主キー付きテーブルを作成すると、主キー列に対して自動的にグローバル一意インデックスが作成され、主キーを通じて行を迅速に特定できるようになります。
以下の例のように、emp_idを主キーとするテーブルemp_tableを作成しました。これは主キー付きテーブルに該当します。
CREATE TABLE emp_table (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(100),
emp_age INT NOT NULL
);
主キーなしテーブル
データテーブルに主キーが指定されていないテーブルを主キーなしテーブルと呼びます。
以下の例のように、データテーブルstudent_tableに主キーが指定されていないため、主キーなしテーブルに該当します。
CREATE TABLE student_table (
student_id INT NOT NULL,
student_name VARCHAR(100),
student_age INT NOT NULL
);
OceanBaseデータベースでは、主キーなしテーブルにパーティション単位の自動インクリメント列を隠れ主キーとして使用し、各パーティション内でこの列の値が一意であることを保証します。ただし、挿入操作で取得されるパーティション単位の自動インクリメント列の値は必ずしも厳密に増加するわけではなく、並行挿入やパーティション間の負荷不均衡により、場合によっては自動インクリメント値にジャンプが生じる可能性があります。