Вопросы

MySQL пропускает значения auto_increment (продолжение)

Я хотел бы продолжить отличное обсуждение ниже, поскольку я все еще не понимаю, что происходит. Я использую Google Cloud MySQL

innodb_version  5.7.25
innodb_autoinc_lock_mode    1

Я загружаю записи в таблицу с автоматически увеличивающимся первичным ключом. Других уникальных ключей нет. Я единственный пользователь, и я однопоточный. Я замечаю спорадические пробелы в ключе, аналогичные тем, о которых сообщали другие в этой ветке.

Чтобы поэкспериментировать с этим материалом, я использовал 5 файлов CSV, которые загружал за один раз; Я отбрасывал таблицу и воссоздавал ее после каждого запуска экспериментальной партии. Я загружал все 5 файлов каждый раз в одном и том же порядке. Я пробовал разные структуры таблиц, разные данные.

В руководстве https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html говорит о режиме последовательной блокировки:

Этот режим блокировки гарантирует, что при наличии операторов INSERT, где количество строк неизвестно заранее (и где номера автоинкремента назначаются по мере выполнения оператора), все значения автоинкремента, назначенные любым «INSERT» -like »являются последовательными, и операции безопасны для репликации на основе операторов.

И я согласен, записи идут последовательно в одном загружаемом файле. Но между загрузками есть промежутки. Эти промежутки могут быть разными. Одна таблица пропускает 1 ключ каждый раз, затем на некоторое время перестает пропускать, а затем снова начинает пропускать. В другой таблице каждый раз пропускается 8 записей, что совпадает с количеством записей, которые я загружаю в первый CSV-файл, который увидела таблица.

Читать:
Проверка статуса обновления табличного куба службы Analysis

Я не видел ни рифмы, ни причины пропущенного количества записей, но, что любопытно, точная последовательность пропуска происходила каждый раз, когда я повторно запускал свой экспериментальный пакет (так что это компьютер!)

Я прочитал предлагаемые решения (установите блокировку на старый 0; не используйте автоматическое приращение и т. Д.). Все в порядке, но я ДЕЙСТВИТЕЛЬНО хочу использовать автоматическое приращение, но эта непредсказуемость заставляет меня нервничать. Кто-нибудь знает

  1. Какой расчет производит движок, чтобы определить, сколько ключей нужно зарезервировать?
  2. Когда происходит это резервирование до начала загрузки?
  3. Являются ли данные загрузки более склонными к потере ключевых слов, чем, скажем, программа на Python?
  4. Есть ли способ повлиять на это бронирование с помощью информации, структуры таблицы?

Большое спасибо!

Похожие записи

рельсы чайная ложка Тестирование в движке Не загружается *_spec.js

admin

Перенаправление Trigger Stripe SCA для аутентификации

admin

Как я могу использовать xargs для копирования файлов, в именах которых есть пробелы и кавычки?

admin

Как запустить модель с переменными из разных фреймов данных несколько раз с lapply в R

admin

Запуск JupyterQ из Anaconda Navigator

admin

GET http://127.0.0.1:3000/build/three.module.js net :: ERR_ABORTED 404 (не найдено) Ошибка при попытке использовать элементы управления орбитой с three.js

admin