gpt4 book ai didi

postgresql - 为什么 Postgres 自动增量计数器会在 Heroku DB 故障转移期间向前移动?

转载 作者:行者123 更新时间:2023-11-29 13:15:59 24 4
gpt4 key购买 nike

Heroku 自动故障转移到跟随者数据库。

我注意到故障转移后一些自动递增的主键列中存在间隙。例如。在故障转移之前,最新记录的 ID 为 117019,下一条记录的 ID 为 117052。没有记录被删除。

这不是问题本身,我只是好奇这里发生了什么,以及我将其归因于故障转移是否正确,或者我是否应该寻找其他解释。

最佳答案

这些差距可能是回滚的失败事务的结果。

序列不是事务性的,也就是说,序列在回滚后不会再次返回相同的值。

这是故意的,请参阅 the documentation :

To avoid blocking concurrent transactions that obtain numbers from the same sequence, a nextval operation is never rolled back; that is, once a value has been fetched it is considered used and will not be returned again. This is true even if the surrounding transaction later aborts, or if the calling query ends up not using the value. [...] Such cases will leave unused “holes” in the sequence of assigned values. Thus, PostgreSQL sequence objects cannot be used to obtain “gapless” sequences.

关于postgresql - 为什么 Postgres 自动增量计数器会在 Heroku DB 故障转移期间向前移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48908928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com