Вы часто видите, что поля базы данных имеют величину 255 символов. В чем заключается традиционная / историческая причина? Я предполагаю, что это как-то связано с ограничениями подкачки / памяти и производительностью, но различие между 255 и 256 меня всегда смущало.
varchar(255)
Учитывая, что это емкость или величина, а не индексатор , почему 255 предпочтительнее 256? Байт зарезервирован для какой-либо цели (терминатор или ноль или что-то)?
Предположительно varchar (0) это ерунда (имеет нулевую емкость)? В каком случае 2 ^ 8 места должно быть 256 обязательно?
Существуют ли другие величины, которые обеспечивают выигрыш в производительности? Например, varchar (512) менее эффективен, чем varchar (511) или varchar (510)?
Является ли это значение одинаковым для всех баз данных отношений, старых и новых?
Отказ от ответственности - я разработчик, а не администратор баз данных, я использую размеры и типы полей, которые соответствуют моей бизнес-логике, где это известно, но я хотел бы знать историческую причину этого предпочтения, даже если оно больше не актуально (но даже больше, если это все еще актуально).
Редактировать:
Спасибо за ответы, кажется, есть некоторое понимание того, что байт используется для хранения размера, но это не решает вопрос окончательно в моем уме.
Если метаданные (длина строки) хранятся в одной и той же смежной памяти / диске, это имеет некоторый смысл. 1 байт метаданных и 255 байт строковых данных очень хорошо подходили бы друг другу и помещались в 256 смежных байтов памяти, что, по-видимому, аккуратно и аккуратно.
Но ... Если метаданные (длина строки) хранятся отдельно от фактических строковых данных (возможно, в основной таблице), то ограничить длину строковых данных одним байтом только потому, что проще хранить только 1-байтовое целое число метаданных кажется немного странным.
В обоих случаях это может показаться тонкостью, которая, вероятно, зависит от реализации БД. Практика использования 255 кажется довольно распространенной, поэтому кто-то где-то, должно быть, вначале аргументировал это хорошим аргументом, может кто-нибудь вспомнить, что это был за случай? Программисты не примут никакой новой практики без причины, и это, должно быть, когда-то было новым.