[DB][DB2] CREATE SEQUENCE

□Sample
CREATE TABLE HOGE_TBL (
  RECORD_ID  INT NOT NULL
         GENERATED ALWAYS AS IDENTITY (
         START WITH 1     -- 開始値
         INCREMENT BY 1    -- 増分値
         MINVALUE 1       -- 最小値
         NO MAXVALUE      -- 最大値
         NO CYCLE        -- シーケンス循環
         NO CACHE
         ORDER) ,
  COLUMN1   VARCHAR(64)
  PRIMARY KEY(RECORD_ID)
)

□考慮事項
SEQUENCE番号の割り振りパフォーマンス
SEQUENCEの割り振り順序
SEQUENCE番号のCYCLE
SEQUENCE番号の欠落可能性
SEQUENCEの移行

□NO ORDER / ORDER
要求の順序でシーケンス番号が生成されるかどうかを指定する。
―ORDER:
 要求の順序でシーケンス番号が生成される。
―NO ORDER:
 要求の順序でシーケンス番号を生成する必要がない。デフォルト。

※DPF環境を使用している場合に有効なオプション。
※DPF環境でNO ORDERオプションを使用した場合、
 SEQUENCE番号が各DB PARTITIONにキャッシュされるので、
 DB PARTITION間でのSEQUENCE番号が逆転する可能性あり。

□CACHE / NO CACHE
高速アクセスのため、
事前割り振り値のいくつかをメモリーに保管(DB2 UDBがメモリに次のID列値(セットシーケンス番号)をキャッシュ)するかどうかを指定する。
パフォーマンスおよびチューニング・オプション。
―CACHE integer-constant:
 事前割り振りされ、メモリーに保管されるシーケンス値の最大数を指定する。
 値を事前割り振りしてキャッシュに保管しておくと、
 シーケンス値を生成する時、ログへの同期入出力が少なくなる。
 ※システム障害が起こると、
  コミットされたステートメントで使用されていないキャッシュ済みシーケンス値はすべて失われる。
 ※CACHE オプションに指定する値は、システム障害の際に失われても構わないシーケンス値の最大数。
 ※最小値は 2 (SQLSTATE 42815)。デフォルト値は CACHE 20。
―NO CACHE:
 シーケンスの値が事前割り振りされないよう指定する。
 システム障害発生や、シャットダウンしても、生成された値が途切れないことが保証される。
 ただし、
 シーケンスの新しい値が要求される度に、
 ログに対して同期入出力(データベース・ログ書き込み)が行われるため、
 アプリケーションのパフォーマンスが低下する。
 また、
 トランザクションがロールバックした場合、
 要求したシーケンス値を実際には使用しないために、
 依然としてギャップが存在する場合がある。

※DPF環境では、
 CACHEオプションを指定したSEQUENCEオブジェクトを使用する場合には、
 DB PARTITION間でのSEQUENCE番号の割り振り順序が、逆転する可能性がある。
 この場合、
 ORDERオプションを指定することで、
 SEQUENCE番号の割り振り順序を要求順にできる。
※CACHEオプション使用時の以下ケースでSEQUENCE番号の欠番が発生する。
 (DB2 UDBの仕様)
 -TRANSACTIONのROLLBACK(NO CACHE時も同様)
 -障害・シャットダウン
 -DBの非活動化

□CACHE + ORDER OPTION
NO CACHEオプション指定時は、
ORDERオプションしなくてもリクエスト順は守られる。

□CYCLE / NO CYCLE
最大値または最小値に達した後、
シーケンスが値の生成を続行するかどうかを指定する。
次の値が境界条件を正確に満たしたとき、またはその値を超えることによって、シーケンスの境界に達する。
―CYCLE:
 最大値または最小値に達した後、このシーケンスについて値の生成を続行する。
―NO CYCLE:
 シーケンスの最大値または最小値に達した後、そのシーケンスについて値は生成されない。デフォルト。

昇順SEQUENCEの場合、
SEQUENCE値が、CREATE SEQUENCEで明示的に指定した最大値(最小値)、
又は、SEQUENCEオブジェクトのデータ・タイプの最大値に達した場合に、
値の生成を継続するかどうかを指定する。
CYCLEが有効の場合は、重複するSEQUENCE値が生成される場合がある。

AS data-type
シーケンス値に使用されるデータ・タイプを指定する。
データ・タイプは、ゼロの位取りの整数値タイプ (SMALLINT、INTEGER、BIGINT、または DECIMAL) か、
ソース・タイプがゼロの位取りの整数値タイプであるユーザー定義の特殊タイプまたは参照タイプにできる (SQLSTATE 42815)。
デフォルトは、INTEGER。

□START WITH numeric-constant
シーケンスの最初の値を指定する。
小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) 限られ、
シーケンスに関連するデータ・タイプの列に割り当てられる正または負の値にできる (SQLSTATE 42815)。
デフォルトは、昇順シーケンスであれば MINVALUE、降順シーケンスであれば MAXVALUE。

□INCREMENT BY numeric-constant
連続したシーケンス値のインターバルを指定する。
長精度整数定数の値を超えない範囲で (SQLSTATE 42820)、
シーケンスに関連したデータ・タイプの列に割り当てられる任意の正または負の値を指定できるす (SQLSTATE 42815)。
ただし、小数点の右側に非ゼロの数字があるとNG (SQLSTATE 428FA)。
値が負の場合は、降順シーケンスで、0 または正の場合は、昇順。
デフォルトは、 1 。

□MINVALUE / NO MINVALUE
降順シーケンスが値の生成を循環または停止する最小値、あるいは最大値に達した後、昇順シーケンスが循環する最小値を指定する。

□MINVALUE numeric-constant
最小値にする数値定数を指定する。
小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) 限られ、
シーケンスに関連するデータ・タイプの列に割り当てられる正または負の値にできる (SQLSTATE 42815) が、
最大値以下であることが条件 (SQLSTATE 42815)。

□NO MINVALUE
昇順シーケンスの場合、値は START WITH 値で、START WITH が指定されない場合には 1 。
降順シーケンスの場合、シーケンスに関連するデータ・タイプの最小値(デフォルト)。

□MAXVALUE / NO MAXVALUE
昇順シーケンスが値の生成を循環または停止する最大値、
あるいは最小値に達した後、降順シーケンスが循環する最大値を指定する。

□MAXVALUE numeric-constant
最大値にする数値定数を指定する。
小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) に限られ、
シーケンスに関連するデータ・タイプの列に割り当てられる正または負の値にできる (SQLSTATE 42815) が、
最小値以上であるのが条件 (SQLSTATE 42815)。

□NO MAXVALUE
昇順シーケンスの場合、値はシーケンスに関連するデータ・タイプの最大値。
降順シーケンスの場合、値は START WITH 値で、START WITH が指定されない場合には -1 。



*使用されているSEQUENCE値の確認
 SYSIBM.SYSSEQUENCESのLASTASSIGNEDVALカラムで参照できる。
 $ db2 "select LASTASSIGNEDVAL,substr(SEQNAME,1,20) as seqname from sysibm.syssequences"



ref:
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0004201.htm
http://www-01.ibm.com/support/docview.wss?uid=std3f9728fa854ca6c1649257238002a2b9d
http://www-01.ibm.com/support/docview.wss?uid=std3c945874cf82449824925722d0001fc89
http://www.e-bellnet.com/special/tec/tec_0302.html

tag : DB2 CREATE SEQUENCE GENERATED ALWAYS AS IDENTITY

2009-06-12 23:57 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud