データ共用がシーケンス番号キャッシングに及ぼす影響

Db2 は、必ず、要求の順にシーケンス番号を割り当てます。

データ共用環境内の各メン バーは CACHE オプション指定の CREATE SEQUENCE ステートメントを使用し て、複数のシーケンス番号をまとめて (シーケンス番号の「チャンク」) 要求できま す。 これらの番号は、メンバーのローカル・キャッシュとなります。 各メンバーはそのローカル・チャンクからキャッシュを割り当てるため、データ共用グループの境界を越えると番号が順序どおり割り当てられない可能性があります。 各値は必ず固有であることが保証されます。

例えば、次の CREATE SEQUENCE ステートメントを実行すると、1 から 20 の 番号を持つ 20 個のキャッシュ値ブロックとしてシーケンス SEQ1 が定義される結 果となります。

汎用プログラミングインターフェース情報の開始。
CREATE SEQUENCE SEQ1 START WITH 1 INCREMENT BY 1 CACHE 20
汎用プログラミングインターフェース情報の終了。

データ共用グループの各メンバーはシーケンス番号付きのキャッシュ値ブロックをそれぞれ独自に取得しているため、各メンバーに割り当てられる値はすべて自身のブロックからの値です。 メンバー DB2A が SEQ1 の最初のキャッシュ値を要求すると、値 1 が割り当てられます。 メンバー DB2B が次のキャッシュ値を要求すると、値 21 が割り当てられます。 メンバー DB2A が別のキャッシュ値を要求すると、値 2 が割り当てられ、メンバー DB2B が別のキャッシュ値を要求すると、値 22 が割り当てられます。 こうしてメンバーのキャッシュ値ブロック内の値がすべて 割り当てられると、次に使用可能なキャッシュ値ブロックが割り振られます。

データ共用システムにおいて、キャッシュ値のシーケンスを厳密な数値順で割り当 てることが求められる場合は、CREATE SEQUENCE ステートメントの NOCACHE オプションを指定する必要があります。