最近,我将我的数据库从AWS v12迁移到了v2 PostgreSQL v14.6。问题是,我们已经在旧的RDS表中设置了排序,现在在新的无服务器v2中,测序正在从一个数字跳到另一个数字。跳跃例子- 1,2,3,4,5,20,21,22,23,24,25,32。我尝试删除旧的序列,并创建新的,但没有运气。
请告诉我你在整理这个问题时的想法。
发布于 2023-02-13 11:06:30
这是序列的预期行为。无论何时出现崩溃、错误,甚至当您断开与数据库的连接(取决于CACHE
设置),它们都会跳过值。请参阅文献资料中的警告:
为了避免阻塞从同一序列中获取数字的并发事务,如果调用事务稍后中止,则不会回收由
nextval
获得的值以供重用。这意味着事务中止或数据库崩溃可能导致赋值序列中的空白。在没有事务中止的情况下也可能发生这种情况。例如,带有INSERT
子句的ON CONFLICT
将计算要插入的元组,包括执行任何必需的nextval
调用,然后才能检测到任何冲突,从而导致它遵循ON CONFLICT
规则。因此,PostgreSQL序列对象不能用于获得“无间隙”序列。
详细信息请阅读我的文章。
https://dba.stackexchange.com/questions/323433
复制相似问题