Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

varchar(20) e varchar(50) são iguais?


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.