Что делать, если мне нужен очень-очень большой идентификатор автоинкремента?

Согласно веб-сайту MySQL, подписанный bigint может достигать 18446744073709551615. Что, если мне нужно число больше, чем это для автоматического увеличения первичного ключа?


person Artist Kampong    schedule 23.04.2011    source источник
comment
Приведите реальный пример, где вам нужно это, что уже очень большое число   -  person Shakti Singh    schedule 23.04.2011
comment
Я не могу представить теоретическую ситуацию, в которой это было бы необходимо... но если это так, просто используйте строку, которую вы увеличиваете самостоятельно. В любом случае любая база данных выйдет из строя LONG, прежде чем попадет в такое количество строк.   -  person Mikecito    schedule 23.04.2011


Ответы (3)


Если вы будете вставлять 1 миллион записей в секунду 24x7, то для достижения предела потребуется 584542 года.

Я надеюсь, что к тому времени следующая версия MySQL будет поддерживать столбцы идентификаторов большего размера :)

person 9000    schedule 23.04.2011
comment
Фактическая «математика» равна 18446744073709551615 / (1000000*60*60*24*365,25), довольно просто: миллион, 60 секунд в минуте, 60 минут в часе, 24 часа в сутках, 365 дней в году ( и одна четверть для високосных лет, что на самом деле не нужно). Это не требует какого-либо размышления. - person 9000; 23.04.2011
comment
Ответ на это выражение 58,45420460906263 года, а не 584542 года, верно? - person Jason; 01.07.2013
comment
@Jason: я не понимаю, как. Я все еще предполагаю, что заполнение 64-битного счетчика миллионами в секунду займет более 584 тысяч лет. В этом весь смысл: хотя 64 бита определенно ограничены, они безграничны для практических целей. - person 9000; 01.07.2013
comment
Возможно, я должен спросить в другом месте. Но я попытался использовать калькулятор в Windows и MS Excel, и он не может содержать все эти числа 18446744073709551615. Что вы, ребята, использовали? С++? - person Fandi Susanto; 26.09.2014
comment
@FandiSusanto: для подобных расчетов на обратной стороне конверта я лично использую python, irb, ghci или даже bc, в зависимости от того, что есть под рукой. Извините, calc.exe — это одна из тех вещей, которыми я никогда не пользуюсь. Хотя ни bash с использованием $(( )), ни elisp не могут справиться с этим вычислением; довольно многие такие инструменты ограничены размером int или long int архитектуры, на которой они работают. - person 9000; 26.09.2014

С таким номером (от 1 до 18446744073709551615) можно дать всем животным на земле уникальный ID :)

person Sourav    schedule 23.04.2011

Я полагаю, ты облажался? Вы можете избавиться от автоматического приращения MySQL и можете использовать базовое число 64, которое вы увеличиваете самостоятельно.

person Ben    schedule 23.04.2011