O MySQL oferece uma variedade de mecanismos de armazenamento. O armazenamento físico de dados depende do mecanismo de armazenamento.
Armazenamento MyISAM de VARCHAR
No MyISAM,
VARCHAR
s normalmente ocupam apenas o comprimento real da string mais um ou dois bytes de comprimento. Isso é tornado prático pela limitação de design do MyISAM para bloqueio de tabela em oposição a um recurso de bloqueio de linha. As consequências de desempenho incluem um perfil de cache mais compacto, mas também um cálculo mais complicado (mais lento) de deslocamentos de registro. (Na verdade, o MyISAM oferece um grau de escolha entre os formatos de tabela de tamanho de linha físico fixo e tamanho de linha físico variável dependendo dos tipos de coluna que ocorrem em toda a tabela. Ocorrência de
VARCHAR
altera apenas o método padrão, mas a presença de um TEXT
blob forças VARCHAR
s na mesma tabela para usar o método de comprimento variável também.) O método de armazenamento físico é particularmente importante com índices, que é uma história diferente das tabelas. MyISAM usa compressão de espaço para ambos
CHAR
e VARCHAR
colunas, o que significa que dados mais curtos ocupam menos espaço no índice em ambos os casos. Armazenamento InnoDB de VARCHAR
O InnoDB, como a maioria dos outros bancos de dados relacionais atuais, usa um mecanismo mais sofisticado.
VARCHAR
colunas cuja largura máxima é inferior a 768 bytes serão armazenadas em linha, com a sala reservada correspondendo a essa largura máxima. Mais precisamente aqui
:Atualmente, o InnoDB não faz compactação de espaço em seus índices, ao contrário do MyISAM, conforme descrito acima.
Voltar à pergunta
Todos os itens acima são, no entanto, apenas um detalhe de implementação que pode até mudar entre as versões. A verdadeira diferença entre
CHAR
e VARCHAR
é semântica, assim como aquela entre VARCHAR(20)
e VARCHAR(50)
. Garantindo que não há como armazenar uma string de 30 caracteres em um VARCHAR(20)
, o banco de dados torna a vida mais fácil e melhor definida para vários processadores e aplicativos que supostamente integra em uma solução de comportamento previsível. Este é o grande negócio. Sobre nomes pessoais especificamente, esta pergunta pode dar-lhe alguma orientação prática. Pessoas com nomes completos com mais de 70 caracteres UTF-8 estão com problemas de qualquer maneira.