更新时间:2026-07-28 GMT+08:00
分享

为什么SEQUENCE的编号存在间隙?

答:为了提高并发性,每个会话按照序列的CACHE参数大小,在用户的私有内存空间缓存一定数量的序列值。会话结束后会丢弃会话缓存的序列值,因此序列值会出现跳跃。

--创建表和序列。
gaussdb=# CREATE SEQUENCE seq_test CACHE 10;

--使用nextval查看下一个序列的值,并退出会话。
gaussdb=# SELECT nextval('seq_test');
 nextval 
---------
       1
(1 row)
gaussdb=# SELECT nextval('seq_test');
 nextval 
---------
       2
(1 row)

--在另一个会话中使用nextval()查看下一个序列的值。
gaussdb=# SELECT nextval('seq_test');
 nextval 
---------
      11
(1 row)

--删除序列。
gaussdb=# DROP SEQUENCE seq_test;

相关文档