Вчера мы добавили простую форму на наш сайт и только что реализовали API View с помощью Django, подключенного к базе данных PostgreSQL. Сегодня я запросил базу данных, чтобы узнать, сколько строк отправлено, и я обнаружил странную вещь в результатах: мы создали и перенесли нашу модель с помощью Django ORM, поэтому первичный ключ определяется как целочисленное поле с автоматическим приращением, проблема в том, что идентификаторы строк не являются непрерывными и настолько разнообразны, что когда я пишу этот вопрос, максимальное значение идентификатора равно 252, но у нас есть только 72 записи в таблице, Я видел это раньше в других таблицах, но эти таблицы подвергались запросам на удаление и обновление, но мы только вставляем в эту новую таблицу, и мой вопрос: удаляются ли наши данные или это нормальное поведение в PostgreSQL? Я искал в Google, и кажется, что единственный способ - проверить журналы WAL, но мы еще не включили это для нашей базы данных, есть ли другой способ проверить, согласованы ли данные или нет? Спасибо.





Если у вас есть несколько подключений к базе данных, которые добавляют строки, вы должны ожидать увидеть дыры в результатах порядковых номеров.
Если Алиса добавляет строку, она может увеличить последовательность с 10 до 11, еще не выполняя COMMIT. Тем временем Боб добавляет запись, увеличивая последовательность до 12 и назначая 12 своей строке, которую он теперь фиксирует. Таким образом, в базе данных хранятся строки со значениями поля идентификатора 10 и 12, но не 11.
спасибо за ответ, но я просто хочу знать, есть ли способ убедиться, что это так? вы правы, мы используем пулы подключений, и возможен сценарий нескольких подключений, но у нас есть большие пробелы, например 10 -> 35 или 218 -> 237, и я думаю, эти пробелы нормальны?