Почему исторически люди используют 255, а не 256 для величин полей базы данных? - PullRequest
173 голосов
/ 26 февраля 2010

Вы часто видите, что поля базы данных имеют величину 255 символов. Какова традиционная / историческая причина, почему? Я предполагаю, что это связано с ограничениями подкачки / памяти и производительностью, но различие между 255 и 256 меня всегда смущало.

varchar(255)

Учитывая, что это емкость или величина, не индексатор , почему 255 предпочтительнее 256? Зарезервирован ли байт для какой-либо цели (терминатор или ноль или что-то)?

Предположительно, varchar (0) - нонсенс (имеет нулевую емкость)? В каком случае 2 ^ 8 места должно быть 256 обязательно?

Существуют ли другие величины, обеспечивающие повышение производительности? Например, varchar (512) менее эффективен, чем varchar (511) или varchar (510)?

Является ли это значение одинаковым для всех баз данных отношений, старых и новых?

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

Edit:

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

Если метаданные (длина строки) хранятся в одной и той же смежной памяти / диске, это имеет некоторый смысл. 1 байт метаданных и 255 байт строковых данных очень хорошо подходят друг другу и помещаются в 256 смежных байтов памяти, что, по-видимому, аккуратно и аккуратно.

Но ... Если метаданные (длина строки) хранятся отдельно от фактических строковых данных (возможно, в основной таблице), то ограничить длину строковых данных одним байтом только потому, что проще хранить только 1-байтовое целое число метаданных кажется немного странным.

В обоих случаях это может показаться тонкостью, которая, вероятно, зависит от реализации БД. Практика использования 255 кажется довольно распространенной, поэтому кто-то где-то, должно быть, вначале аргументировал это хорошим аргументом, может кто-нибудь вспомнить, что это был за случай? Программисты не примут никакой новой практики без причины, и это, должно быть, когда-то было новым.

Ответы [ 12 ]

0 голосов
/ 26 сентября 2013

Данные сохраняются в памяти в двоичной системе, а 0 и 1 - двоичные цифры. Наибольшее двоичное число, которое может вписаться в 1 байт (8 бит), равно 11111111, которое преобразуется в десятичное 255.

0 голосов
/ 11 марта 2013

Я думаю, что это может ответить на ваш вопрос. Похоже, это был максимальный предел varchar в более ранних системах. Я снял его с другого вопроса stackoverflow.

Трудно понять, какой самый длинный почтовый адрес, конечно, поэтому многие люди выбирают длинный VARCHAR, который, безусловно, длиннее любого адреса. И 255 обычно, потому что это могло быть максимальной длиной VARCHAR в некоторых базах данных на заре времени (как и в PostgreSQL до недавнего времени).

Есть ли недостатки в использовании общего varchar (255) для всех текстовых полей?

...