Как проверить, что данные удалены или нет в PostgreSQL - PullRequest
0 голосов
/ 29 октября 2018

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

1 Ответ

0 голосов
/ 29 октября 2018

Ожидайте отверстия в последовательности

Если у вас есть несколько соединений с базой данных, которые добавляют строки, то вы должны ожидать появления дыр в результатах порядкового номера.

Если Алиса добавляет строку, она может увеличить последовательность с 10 до 11, пока еще не выполняет COMMIT. Тем временем Боб добавляет запись, увеличивая последовательность до 12 и присваивая 12 своему ряду, который он теперь фиксирует. Таким образом, в базе данных хранятся строки со значениями полей идентификаторов 10 и 12, но не 11.

  • Если Алиса фиксирует, в запросе появится 11.
  • Если Алиса делает ROLLBACK, то 11 * никогда не появится в запросе.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...