AUTO_INCREMENT в MariaDB хранится только в памяти - PullRequest
0 голосов
/ 21 ноября 2018

В настоящее время мы используем MariaDB 10.1 для разработки.При инициализации базы данных мы запускаем скрипт миграции, который устанавливает значение AUTO_INCREMENT для конкретной таблицы:

ALTER TABLE table_name AUTO_INCREMENT=1000000;

Мотивация
Мы запускаем MariaDB в образе Docker для целей разработкимы можем уничтожить и восстановить базу данных в любое время.Однако эта конкретная таблица должна быть инициализирована с этим начальным значением для строки AUTO_INCREMENT.Таким образом, мы скопировали скрипт в /docker-entrypoint-initdb.d при создании образа Docker.

Однако это никак не повлияет, пока не последует INSERT.

Из базы знаний MariaDB:

До MariaDB 10.2.3 InnoDB и XtraDB использовали счетчик автоинкремента, который хранится в памяти.Когда сервер перезагружается, счетчик повторно инициализируется, что отменяет действие любой опции AUTO_INCREMENT = N в операторах таблицы.

https://mariadb.com/kb/en/library/auto_increment-handling-in-xtradbinnodb/

Однако я не смог найтикак справиться с этим.Какие операторы или конфигурации мне нужно сделать, чтобы вышеупомянутый оператор SQL был эффективным (пока мы не будем готовы к обновлению до MariaDB 10.2.4 или выше)?

1 Ответ

0 голосов
/ 22 ноября 2018

Единственное использование для этого ALTER состоит в том, чтобы немедленно INSERT строка и ей было присвоено значение 1000000. После того, как эта строка вставлена, предложение больше не действует - если вы не удалите все строки и не нуждаетесьперезапустить с этим значением.

Альтернативой этому является явное предоставление значения для первого INSERT.

Поскольку мне еще предстоит найти «действительную» причину для использованияПожалуйста, объясните, что вы пытаетесь сделать.Может быть, мы можем придумать подходящее решение.

В будущем, я думаю, произойдут изменения, при которых значение ИИ сохранится в индексе.Это уже особенность в MySQL 8.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...