[firebase-br] Tamando do registro na tabela

Douglas Tosi douglasht em gmail.com
Ter Maio 26 15:42:04 -03 2009


2009/5/26 Marcelo Moreira <marcelomoreira.souza em gmail.com>:
> Com as expecificacoes do meu campo blob gravando este arquivo compactado no
> banco ele ficaria mais ou menos com este tamanho?

Sim.

> Ate entao nao trabalhava com campos do tipo blob mas eles trabalham igual ao
> campo do tipo VARCHAR por exemplo? Tipo se eu crio um campo VARCHAR(100) e
> so gravo nele 55 caracteres o restante mesmo nao tendo nada fica reservado
> né.

Não é bem assim.
O restante fica comprimido, mas ainda ocupa um pouquinho de espaço.
Assim, se você vai armazenar no máximo 100 caracteres, não é boa
prática criar um campo varchar(8000). Estes 7900 bytes restantes serão
comprimidos e ainda vão ocupar um espaço considerável (acho que uns 60
bytes).
Se o campo é varchar(100) e você armazenar 55, serão só uns 3 ou 4 bytes extra.

O blob é diferente. Como você não define um tamanho máximo, não
existem estes bytes extra.
Por outro lado o blob fica gravado em uma página especial, diferente
da página onde está o restante do registro. Significa que mesmo para
ler blobs pequenos a base tem que ler duas páginas ao invés de apenas
uma.
O clients também lêm blobs de uma maneira diferente. Para cada
registro, existe uma viagem de ida e volta para buscar o blob. Se você
estiver lento 1000 registros com blobs, fica lento.

hth,
-- 
Douglas Tosi
www.sinatica.com




Mais detalhes sobre a lista de discussão lista