Estimando o espaço de dados que será usado no MySQL ao adicionar uma tabela

1

Primeiro, alguns inglês . Estimativa não é o mesmo que medir. Se eu quisesse medir, eu faria isso;) (eu poderia fazer isso mais tarde). Também tenho um dev pergunta colocados relacionados a este post.

Eu gostaria de armazenar dados em uma tabela MySQL. O tipo de dados da tabela é date, long, long, long, long, short int, onde eu teria uma chave composta com base na data, long, long.

Também pode haver mais índices. (Editar) Parece que seriam 42 bytes de dados mais os índices. Você pode usar 1 milhão de registros inseridos todos os dias para o crescimento de dados. Devo apenas dizer que 42 milhões de bits seriam adicionados todos os dias (acho que há mais, com base na configuração)

Então, olhando para este link , ele se torna

Posso dizer que 1 milhão de linhas são adicionadas todos os dias. Quanto eu acumularia em Diskspace? Quaisquer referências seriam muito apreciadas (tentarei encontrar algumas e postá-las aqui também)

    
por geoaxis 24.08.2011 / 18:36

2 respostas

1

Você deve perguntar ao information_schema do MySQL para obter essa informação.

Veja como:

SELECT AVG_ROW_LENGTH FROM information_schema.tables
WHERE table_schema='whateverdatabase'
AND table_name='whatevertable';

Agora você pode usar múltiplos desse valor para suas estimativas. Então, no seu caso, isso seria:

SELECT (AVG_ROW_LENGTH * 1000000) AverageSpaceForOneMillionRows
FROM information_schema.tables
WHERE table_schema='whateverdatabase'
AND table_name='whatevertable';
    
por 24.08.2011 / 23:25
1

Espere, calculo isso de acordo com este :

4 times long = 32 Byte
1 time shortint = 2 Byte
1 time datetime = 8 Byte

que soma até 42 Byte = 336 Bit. Mais a sobrecarga de cada linha (desconhecida). E mais o índice de pelo menos 32 Byte. Então, uma linha é redonda em torno de 80 Byte ou 640 Bit.

1 Milhões de vezes 80 Byte é igual a 80.000.000 bytes, que é de 80 megabytes (não Mebibyte). O que é apenas uma estimativa aproximada.

    
por 24.08.2011 / 18:58

Tags