はじめに

本記事では、シーケンスによって採番される番号を連番にする方法(NO CACHEパラメータ)を紹介します。
NO CACHEパラメータを使用しない場合、シーケンスはセッション毎に予め一定数の番号をメモリにキャッシュしてから採番するため、一部の番号が抜ける可能性があります。
一方で、NO CACHEパラメータを使用する場合は、ディスク上で番号を管理するため、連番を保つことができます。
※NO CACHEパラメータを使用する場合、採番時に毎回ディスクアクセスが発生する動作のため、データロードの性能が落ちる可能性があります。十分なテストを行った上でのご利用をご検討ください。

構文

連番にする場合の構文
CREATE SEQUENCE シーケンス名 MINVALUE 1 START WITH 1 INCREMENT BY 1 NO CACHE;

実行例

連番にする場合


連番でなくても良い場合


参考情報

CREATE SEQUENCEのSQLリファレンス

CREATE SEQUENCEの構文や各パラメータの詳細は、以下のマニュアルをご参照ください。
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/SQLReferenceManual/Statements/CREATESEQUENCE.htm

複数ノード構成でキャッシュする番号の仕様

上述「3.2 連番でなくても良い場合」の実行例のように、一定数の番号をキャッシュする場合は、セッション毎に採番の開始番号が異なります。
また、複数ノード構成の場合にはノード毎にキャッシュする番号が異なります。
詳細は以下のマニュアルをご参照ください。
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/AdministratorsGuide/Sequences/HowVerticaAllotsCacheforSequencing.htm

検証バージョンについて

この記事の内容はVertica 10.1で確認しています。

更新履歴

2021/07/01 本記事を公開