[firebase-br] Espaco: CHAR x VARCHAR

Douglas Tosi douglasht em gmail.com
Sex Jul 3 16:49:46 -03 2009


2009/7/3 Josué <josue em ciberpoint.com.br>:
> Eu acredito que na tecnologia dos HDs atuais, é mais preocupante o
> gerenciamento dos clusters, pode ser que se perca mais espaço com clusters
> subutilizados  do que a economia dos VARCHAR.

Josué, a discussão char x varchar não tem nada a ver com má utilização
de cluster do disco.

Sabemos que *arquivos* diferentes não podem compartilhar o mesmo cluster.
Mas a base de dados fica inteira em um (ou poucos mais) arquivos bem
grandes. Não existe subutilização de cluster.
Você pode mudar um pouco o foco desta análise e pensar em
subutilização de páginas da base. Aí sim. Elas são o equivalente em
alto nível dos clusters. Mesmo assim acho que não tem relação com a
discussão char x varchar.

O varchar precisa guardar o tamanho real e por isto vai sempre ocupar
2 bytes a mais *no disco*, mas o char sempre vai trafegar o tamanho
inteiro *na rede* e *na memória*.
Daí é que vem o senso comum de que char é usado para campos com
tamanho fixo: Se você já sabe o tamanho de antemão, pode muito bem
economizar 2 bytes usando char. Mas se você não sabe o tamanho de
antemão, usar char para economizar 2 bytes não faz sentido. Em um
milhão de registros, vai economizar ~1,8MB. Coloque isto na balança
contra o trabalho que dá manter e programar *ao redor* de campos char
cheios de espaço no fim.

Na minha [nada] humilde opinião, usar campos Nome CHAR(60) é
improdutivo e um contracenso.

hth,
-- 
Douglas Tosi
www.sinatica.com




Mais detalhes sobre a lista de discussão lista