Você costuma ver os campos do banco de dados configurados com uma magnitude de 255 caracteres. Qual é o motivo tradicional / histórico? Suponho que tenha algo a ver com limites de paginação / memória e desempenho, mas a distinção entre 255 e 256 sempre me confundiu.
varchar(255)
Considerando que essa é uma capacidade ou magnitude, não um indexador , por que 255 é preferível a 256? Um byte está reservado para alguma finalidade (terminator ou null ou algo assim)?
Presumivelmente, varchar (0) é um absurdo (tem capacidade zero)? Nesse caso, 2 ^ 8 de espaço deve ser 256, com certeza?
Existem outras magnitudes que fornecem benefícios de desempenho? Por exemplo, varchar (512) tem menos desempenho que varchar (511) ou varchar (510)?
Esse valor é o mesmo para todos os bancos de dados de relações, antigos e novos?
isenção de responsabilidade - como desenvolvedor não sou DBA, uso tamanhos e tipos de campos adequados à minha lógica de negócios onde isso é conhecido, mas gostaria de saber o motivo histórico dessa preferência, mesmo que não seja mais relevante (mas até mais se ainda for relevante).
Editar:
Obrigado pelas respostas, parece haver algum consenso de que um byte é usado para armazenar tamanho, mas isso não resolve definitivamente o problema em minha mente.
Se os metadados (comprimento da string) forem armazenados na mesma memória / disco contíguo, faz algum sentido. 1 byte de metadados e 255 bytes de dados de string se encaixariam muito bem e se encaixariam em 256 bytes contíguos de armazenamento, que presumivelmente são limpos e arrumados.
Mas ... Se os metadados (comprimento da string) forem armazenados separadamente dos dados reais da string (talvez em uma tabela mestre), para restringir o comprimento dos dados da string por um byte, apenas porque é mais fácil armazenar apenas um número inteiro de 1 byte de metadados parece um pouco estranho.
Nos dois casos, parece ser uma sutileza que provavelmente depende da implementação do banco de dados. A prática de usar 255 parece bastante difundida; portanto, alguém em algum lugar deve ter argumentado um bom argumento para isso no início. Alguém pode se lembrar de qual era esse caso? Os programadores não adotam nenhuma nova prática sem uma razão, e isso deve ter sido novo uma vez.