FAQ
Snowflake シーケンス FAQ
メインガイドページに載っていない、Snowflake の SEQUENCE オブジェクトに関する追加のよくある質問。
シーケンスの使用に必要な権限は?
NEXTVAL を呼び出すには、シーケンスへの USAGE 権限が必要です。シーケンスの作成・変更には、CREATE SEQUENCE またはスキーマの所有権が必要です。シーケンスは他のスキーマオブジェクトと同様に、スキーマレベルの付与を継承します。
Snowflake のシーケンスキャッシュはどう動きますか?
Snowflake はデフォルトでシーケンス値をキャッシュします(キャッシュサイズ 20)。これにより高頻度の NEXTVAL 呼び出しのパフォーマンスが向上します。キャッシュされた値はサーバー再起動時に失われ、大きなギャップが生じます。ギャップを最小化したい場合は NO CACHE を設定しますが、パフォーマンスは犠牲になります。
シーケンスを特定の値にリセットできますか?
ALTER SEQUENCE seq_name SET VALUE = n でリセットできます。次の NEXTVAL 呼び出しは n + increment を返します。あるいは、新しい START 値でシーケンスを CREATE OR REPLACE することで完全にリセットできます。
シーケンスはトランザクションセーフですか?
NEXTVAL の呼び出しはトランザクションではありません。一度消費された値は、トランザクションがロールバックされても再発行されません。ギャップが生じる可能性がある代わりに、一意性が保証されます。
関連ページ