У меня есть таблица, где 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
Идентификаторы с датами:
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
, но этот случай был повторен.