【发布时间】:2016-06-05 09:55:57
【问题描述】:
我有一个在 Heroku 上运行的 Ruby Web 应用程序和 Postgres 数据库。我注意到在 Postgres 数据库由 Heroku“维护”期间,自动递增的 ID 之间存在差距。
间隙是一次性的,然后 ID 再次增加 1。像这样:
ID | Created at |
2959 | 2016-02-14 21:07:05.149797 |
2960 | 2016-02-14 21:15:05.03284 |
2961 | 2016-02-14 22:59:19.634962 |
2994 | 2016-02-15 09:25:30.969881 |
2995 | 2016-02-15 09:44:38.49678 |
2996 | 2016-02-15 09:51:00.282624 |
Heroku 的维护发生在正在创建的两条记录(2961 和 2994)之间,位于 2016-02-15 04:00:00。
我看到了一个解释,即失败的事务将导致在下一次成功提交时跳过一个 ID,但我在应用程序日志中看不到任何内容表明当时正在创建任何记录。
【问题讨论】:
-
一个失败的事务可以做到这一点,但其他一些无害的事情也可以做到。您是否担心数据已丢失,或者只是想知道为什么会出现空白?
-
@David 我认为没有任何数据丢失(由于当时很少/没有流量),但只是想知道是什么导致了这种行为
-
不确定这是否有帮助,但我自己刚刚遇到了这个问题,在研究中,发现了另一个类似的SO question。有趣的是,我们似乎都在使用 Heroku 和 PostgreSQL AND,我们各自的间隔计数是 正好 33。我从
171到204。不幸的是,除此之外我没有任何答案。
标签: ruby-on-rails ruby postgresql heroku