Должны ли мы использовать bigint в качестве искусственного ключа? - PullRequest
0 голосов
/ 02 октября 2019

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

Целесообразно ли использовать bigint в качестве типа данных для искусственных ключей? Я думаю, потому что он 64-битный, он может быть очень быстро обработан процессором. Или это неправильно?

Ответы [ 2 ]

3 голосов
/ 02 октября 2019

В то время как ваш компьютер будет иметь 64-битные регистры, большая часть проблем в производительности связана с помещением вещей в память. Для вашей общей производительности не полезно делать объекты больше, чем они должны быть. 64-битные системы отлично справляются с 32-битной арифметикой.

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

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

3 голосов
/ 02 октября 2019

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

Таким образом, в зависимости от диапазона выбирает лучший тип для вас. Я предполагаю, что INT будет small для хранилища данных (помните, когда счетчик YouTube был сломан из-за видео попадания 2,147,483,647 просмотров - верхней границы диапазона INT.

Как быстро будет обрабатываться ЦП, если ключ BIGINT? Не беспокойтесь о таких вещах - обработка зависит от других факторов - индексов, размера строки, планов выполнения, способен ли механизм обрабатывать строки в пакетах ии т. д. Насколько хорош ваш движок с определенными типами данных, последнее беспокойство, и даже если оно медленное, я сомневаюсь, что вы можете использовать INT из-за требований бизнеса.

...