Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений? / 8 сообщений из 8, страница 1 из 1
15.04.2016, 15:02
    #39216677
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
Версия сервера: 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
15.04.2016, 15:05
    #39216679
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
Dima T,

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

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


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

Есть еще какой-то способ счетчик поменять? Хэлпы почитал - не нашел.
...
Рейтинг: 0 / 0
17.05.2016, 09:37
    #39237089
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
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
17.05.2016, 18:27
    #39237707
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений?
Ясно. Придется заняться велосипедостроением. Уберу автоинкремент и сделаю отдельную таблицу с автоинкрементом, буду оттуда ID брать.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не будет глюков если AUTO_INCREMENT поставить меньше имеющихся значений? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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