Espaço vazio no banco de dados MySql

2

Perdoe-me se não estiver usando o vocabulário apropriado.

Estou planejando implementar um banco de dados MySQL com um front end PHP para que eu possa inserir detalhes da ordem de trabalho e arquivos (screengrabs, ZIPs, etc.) no banco de dados. Como agora, minhas ordens de serviço anteriores são salvas em PSTs de e-mail e é inconveniente montá-las uma de cada vez para revisar e procurar ordens de serviço anteriores.

A descrição em uma ordem de serviço pode ser uma sentença curta de até muitos milhares de caracteres. Se eu tiver colunas como tipos de dados VARCHAR ( i ) ou TEXT / MEDIUMTEXT, o espaço máximo será alocado para cada campo ou o banco de dados aumentará os campos até a capacidade permitida pelo tipo de dados?

Suponho que uma maneira visual de fazer essa pergunta seria: o meu campo de texto é um copo com um volume imutável com uma quantidade variável de água ou é um balão com um volume de ar em expansão?

    
por user38537 31.10.2015 / 07:07

1 resposta

2

É um balão. Se você colocar apenas alguns bytes de texto no campo, essa "célula" ocupará apenas alguns bytes (mais qualquer que seja o custo da estrutura da célula). Isto supõe que você esteja usando um dos mecanismos mais comuns.

A estrutura da célula pode mudar de tamanho embora; este não é um jogo de soma zero. Uma coluna LONGTEXT ocupará 4 bytes por coluna por linha. Um VARCHAR ocupará apenas 1 byte por coluna por linha. Esses bytes são usados para descrever o tamanho dos dados na célula real. Agora, com o armazenamento sendo tão barato, isso realmente não importa, a menos que você esteja falando sobre centenas de milhões de linhas. 1 milhão de linhas de um LONGTEXT vazio usará 3.82MB e 1 milhão de linhas de um VARCHAR vazio usará 0.95MB

    
por 31.10.2015 / 07:38