我有一个表,其中 id 是主键和序列。在事务中我调用序列
select NEXTVAL(next_cons_id) as next_cons_id
然后创建一个新记录,其中字段 id = next_cons_id 从下面的代码中获得。
DDL 序列
CREATE SEQUENCE IF NOT EXISTS next_cons_id START WITH 1;
在大多数情况下,它运作良好。做了一项小型研究后,我发现了一些模式。
Id, ... gap ..., nextId
606401,605557,
604556,605401,
603555,604401,
602594,603401,
601594,602401
带日期的 ID:
601594 2019-10-10 00:04:54
602401 2019-10-10 01:36:33
602594 2019-10-10 21:46:43
603401 2019-10-11 01:19:49
603555 2019-10-11 21:41:26
604401 2019-10-12 00:30:09
604556 2019-10-13 00:15:32
605401 2019-10-13 03:51:42
605557 2019-10-13 22:42:22
606401 2019-10-14 02:14:28
在我创建了控制台脚本之后,该脚本每秒在测试表中插入一条记录:
237343 2019-10-14 00:31:03 2019-10-14 00:31:03
237344 2019-10-14 00:31:03 2019-10-14 00:31:03
....gap...
238000 2019-10-14 00:31:04 2019-10-14 00:31:04
它表只使用测试脚本。
在监控zabbix回滚事务时未发现。
数据库有一个复制服务器。
服务器版本:10.3.13
你有什么想法来解决这个问题吗?
UPD:我删除了序列并重新创建了这个表,
id primary key autouncrement
但是这种情况已经重复了。