powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
8 сообщений из 8, страница 1 из 1
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
    #39216677
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия сервера: 5.2.14-MariaDB-mariadb122
Есть таблица MyISAM
Код: sql
1.
CREATE TABLE MyTable (Id INT UNSIGNED AUTO_INCREMENT NOT NULL , ...


текущие значения Id 95 млн.
Хочу сделать
Код: sql
1.
ALTER TABLE MyTable AUTO_INCREMENT = 10000000



Таблица - промежуточный буфер, одни добавляют сообщения, другие читают и удаляют, на текущий момент нет Id меньше 90 млн. Если переключу на 10 млн, то пока до 20 считает - все что больше уже удалится к этому времени.

Зачем это надо: этот Id используется у достаточно большого количества пользователей, понаписано полно разного: от обмена в DBF с полем N(8) под Id до кривых проверок что Id должен быть 8-мизначный, вобщем хз что на той стороне понаписано, у каждого пользователя свои писатели.

Переживаю: не словлю ли какие-то глюки или тормоза при таком переключении? Вроде не должен, но с MySQL мало работал, может чего не знаю, поэтому решил переспросить.
...
Рейтинг: 0 / 0
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
    #39216679
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Если таблицы InnoDB, то при рестарте сервера автоинкременты автоматически переинициализируются на MAX(id)+1. За эти придется следить.
В остальном ничего страшного случиться не должно.
...
Рейтинг: 0 / 0
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
    #39216681
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зримых проблем две.
Первая - можно наткнуться на значение, которое всё ещё не удалено. Итог - вставка в таблицу прекратится, начнёшь терять данные.
Вторая - наличие в связанных таблицах неудалённых записей, привязанных к этому значению. Итог - в общем очевиден.
Вторая проблема устраняется принудительной ручной чисткой "подвисших" записей в связанных таблицах. Первая - только периодической проверкой, что диапазон значений автогенерации на достаточную дистанцию "чист".
...
Рейтинг: 0 / 0
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
    #39216702
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft - MyISAM. Он не инициализируется при перезагрузке?

Akina, как уже написал счетчик не досчитает до уже существующего значения. Текущее min(Id) ~90 млн. Потенциальную возможность такого понимаю, поэтому буду периодически проверять пока все что > 90 млн. не удалится.
...
Рейтинг: 0 / 0
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
    #39216705
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tmiksoft - MyISAM. Он не инициализируется при перезагрузке?нет.
...
Рейтинг: 0 / 0
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
    #39237057
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фокус не удался :(
Код: sql
1.
ALTER TABLE MyTable AUTO_INCREMENT = 10000000


Выполняется без ошибок, но счетчик не меняет. Продолжает выдавать как было 95000000+

Есть еще какой-то способ счетчик поменять? Хэлпы почитал - не нашел.
...
Рейтинг: 0 / 0
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
    #39237089
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Да, сорри, запамятовал я про это.
http://dev.mysql.com/doc/refman/5.7/en/alter-table.html To change the value of the AUTO_INCREMENT counter to be used for new rows, do this:

ALTER TABLE t2 AUTO_INCREMENT = value;

You cannot reset the counter to a value less than or equal to the value that is currently in use. For both InnoDB and MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum AUTO_INCREMENT column value plus one.
...
Рейтинг: 0 / 0
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
    #39237707
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно. Придется заняться велосипедостроением. Уберу автоинкремент и сделаю отдельную таблицу с автоинкрементом, буду оттуда ID брать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]