Предел SQL 'автоинкремент' в качестве первичного ключа - PullRequest
0 голосов
/ 02 мая 2018

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

Я пытаюсь спроектировать базу данных, используя SQL для хранения информации каждой темы, включая идентификатор темы в качестве первичного ключа.

Сначала я создаю идентификатор, используя целочисленный тип данных с автоинкрементом, так как я думаю, что это самый простой способ. Затем я подумал об этом и обнаружил, что целое число имеет предел (число может быть большим, но оно есть), поэтому я нахожу здесь другой метод.

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

Я также нахожу здесь GUID из исследований, но не уверен, что его можно использовать.

Я хотел бы, чтобы вы предложили мне несколько способов, как справиться с предельным размером целого числа в качестве первичного ключа, или предложите мне какие-либо ключевые слова для дальнейшего исследования.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

При использовании int максимальное значение, поддерживаемое SQL Server, составляет 2 147 483 647.

Просто для полноты добавлю, что еще одним вариантом является изменение типа данных столбца на bigint (максимальное значение 9,223,372,036,854,775,807 - это позволит вам вставлять миллион строк в секунду почти 300 000 лет подряд ). Или, если вы боитесь, что вы переполните даже это, вы можете использовать десятичную (38,0) - максимум здесь - это число, состоящее из 38 9 (что позволит вам поддерживать тот же темп в течение 31 709 791 983 764 586 504 312 531 года).

http://sqlblog.com/blogs/hugo_kornelis

0 голосов
/ 02 мая 2018

Этот ответ предполагает MySQL / MariaDB, потому что он использует терминологию «автоинкремент» для таких столбцов (в отличие от других баз данных, которые используют identity или serial).

Если int недостаточно велико, вы можете использовать bigint.

Хотя я могу считать маловероятным, что вы превысите пороговые значения для int (это работает для многих приложений), bigint потребует больших усилий для вас и ваших компьютеров на долгое время, чтобы превысить максимальное значение.

Это объясняется в документации .

...