Переполнение автоинкремента

Nikitian

Новичок
Блин, а ведь верно: при большом количестве вставок-удалений вполне может проявиться ситуация с выходом за пределы того же Int. Получается для всех autoincrement -полей указывать максимаьлно возможное bigint?
 

zerkms

TDD infected
Команда форума
Nikitian
напиши, какое максимальное значение может принимать int в mysql.
 

Nikitian

Новичок
До 2 миллиардов со знаком и 4 без знака. Вы считаете это много?
5-7 лет активной работы и неожиданный баг гарантирован.
 

zerkms

TDD infected
Команда форума
Nikitian
расскажите о своей практике, когда вы добирались до лимита? какой это был проект? что за данные?

чтобы вас не утомлять подсчётами - упереться в знаковый инт за 7 лет, это ~840000 записей в день. в беззнаковый - в 2 раза больше...
а теперь поговорите ещё, что это рядовая ситуация.
 

Nikitian

Новичок
10 вставок в секунду - это потянет даже шаредхостинг )))
На одном из наших сайтов (городской портал) сейчас идёт до 1000 запросов в секунду из них около 1% - это не select'ы. Вот и думаю что ждёт в ближайшем будущем, если учесть, что сайт пашет уже 5 год и меньше не становится.

P.S. Дебильнейшая структура сайта устроена таким образом, что есть одна гигантская таблица и постепенно она разгружается на мелкие, но не разгрузится ещё ой как долго...
 

zerkms

TDD infected
Команда форума
10 вставок в секунду - это потянет даже шаредхостинг )))
и на шаред хостинге будет 1 таблица, ага

На одном из наших сайтов (городской портал) сейчас идёт до 1000 запросов в секунду из них около 1% - это не select'ы. Вот и думаю что ждёт в ближайшем будущем, если учесть, что сайт пашет уже 5 год и меньше не становится.
даже если представить, что ты говоришь правду, то это 10 те же вставок в секунду. и те же 840000 в сутки. жажду узнать, что это за данные, ну и ссылку на этот мегапортал (в этом месте думаю вконтакте, как один из самых посещаемых в рунете, тихо стоит в уголочке)

-~{}~ 29.05.09 21:26:

P.S. Дебильнейшая структура сайта устроена таким образом, что есть одна гигантская таблица и постепенно она разгружается на мелкие, но не разгрузится ещё ой как долго...
не верю.
 

Фанат

oncle terrible
Команда форума
Nikitian
если это твой сайт, то, может быть, ты приведешь реальную статистику по приросту автоинкремента, а не высосанные из пальца проценты?
 

Nikitian

Новичок
Автор оригинала: *****
Nikitian
если это твой сайт, то, может быть, ты приведешь реальную статистику по приросту автоинкремента, а не высосанные из пальца проценты?
Сайт не мой, а компании, в которой работаю. К реальной статистике доступа не имею в данный момент, т.к. впринципе и не должен иметь его, но однажды видел.
Сейчас посмотрел базу - судя по всему, существующие таблицы в базе не один раз копировались и сейчас я насчитал 4 старых таблицы с максимумом id 10-15кк и текущая max(id) 2055454. Видимо там наступал предел возможностей для существующего оборудования.

Вопрос идёт не о том, где и что я видел и делаю, а о том, как выходить из озвученной ситуации.
 

zerkms

TDD infected
Команда форума
Сейчас посмотрел базу - судя по всему, существующие таблицы в базе не один раз копировались и сейчас я насчитал 4 старых таблицы с максимумом id 10-15кк и текущая max(id) 2055454.
это в тысячу раз меньше, чем беззнаковый предел. через лет 500 приходи.

кстати, я не верю, что по урлам, присланным мне в PM, сайты, которые работают по вышеозвученной схеме. не верю.
 

Фанат

oncle terrible
Команда форума
Есть у меня предположение, что id в этих таблицах вообще не нужно.
о том, как выходить из озвученной ситуации.
так где эта ситуация? кроме твоего пубертатного воображения? прежде, че м выходить из ситуации, надо в нее войти. ты нам ее продемонстрировать не смог. вот когда будет - приходи, побеседуем.
 

Nikitian

Новичок
прежде, че м выходить из ситуации, надо в нее войти
Смешные вы. Прежде чем войти в ситуацию её нужно предвидеть, иначе в ситуацию не войдёшь, а вляпаешься.

Это был лишь пример. Допустим система статистики подобные объёмы данных наберёт гораздо быстрее.

Есть у меня предположение, что id в этих таблицах вообще не нужно.
Id там нужно, причём критично. Не нужна одна гигантская таблица, но это уже не ко мне вопрос - я как раз разгружаю её на мелкие.
 

Фанат

oncle terrible
Команда форума
Надо адекватно оценивать свой опыт и свои знания. На основании которых делаются эти "предвидения". Иначе можно сесть в лужу.

Зачем системе статистики уникальный идентификатор?
 

zerkms

TDD infected
Команда форума
Смешные вы. Прежде чем войти в ситуацию её нужно предвидеть, иначе в ситуацию не войдёшь, а вляпаешься.
это тебе на форумы по философии нужно тогда. ну или практическому гаданию.

Это был лишь пример. Допустим система статистики подобные объёмы данных наберёт гораздо быстрее.
вот как только у тебя будет система статистики... вот как только твоя система наберёт нужные темпы роста... кстати, люди, которые такими объёмами ворочают, как правило таких вопросов не задают.

ps: я ошибся, если темпы сохранятся, то приходить тебе за советом нужно не через 500 лет, а через 5000. ну или 10 000 лет, если поставить unsigned.
имхо, у тебя достаточно времени, чтобы что-то придумать.
 

Gas

может по одной?
я поддерживаю zerkms и Фaнат
но свои 5 копеек: есть какие-то подводные камни у BIGint + autoincrement ?
 

korchasa

LIMB infected
Автор оригинала: Nikitian
До 2 миллиардов со знаком и 4 без знака. Вы считаете это много?
5-7 лет активной работы и неожиданный баг гарантирован.
Проблемы с работой на таких размерах данных возникает гораздо раньше проблемы конечности автоинкремента.

-~{}~ 29.05.09 15:55:

Автор оригинала: Gas
но свои 5 копеек: есть какие-то подводные камни у BIGint + autoincrement ?
Какой максимальный integer в РНР на 32-битной машине? ;)
 

zerkms

TDD infected
Команда форума
Какой максимальный integer в РНР на 32-битной машине?
если никаких вычислений не производить (а какие вычисления производить с PK?) - тогда пофиг, всё равно приходит строка.

ps:
Код:
zerkms@honeypot ~ $ php -r "echo pow(2, 33) * 13 + 666;"
111669150362
zerkms@honeypot ~ $ uname -a
Linux honeypot 2.6.28-gentoo-r5 #1 SMP Sat Apr 25 00:35:48 VLAST 2009 i686 Intel(R) Celeron(R) CPU 430 @ 1.80GHz GenuineIntel GNU/Linux
 

korchasa

LIMB infected
Автор оригинала: zerkms
если никаких вычислений не производить (а какие вычисления производить с PK?) - тогда пофиг, всё равно приходит строка.
Но камешек то есть? Приходится id-шник из запроса постоянно чистить ручками, вместо простого кастования к инту.
 
Сверху