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

Como calcular o espaço em disco usado pela tabela MySQL a partir de tipos de dados de coluna e número de linhas?

  • Há mais despesas gerais do que você mencionou. 20 bytes/linha pode estar próximo .
  • Não confie em SHOW TABLE STATUS para dar "Linhas", use SELECT COUNT(*) ... Observe como estava quase um fator de 2.
  • Calcule de outra forma:135245332480 / 3017513240 =45 bytes.
  • De 45 bytes, deduzo que muitas das células são NULL?
  • Cada coluna em cada linha tem sobrecarga de 1 ou 2 bytes.
  • O ROW_FORMAT importa.
  • TEXT e BLOB (etc) têm regras radicalmente diferentes dos tipos de dados simples.
  • Os índices ocupam muito mais do que os 6 bytes que você mencionou (veja sua outra postagem ).
  • A estrutura BTree tem alguma sobrecarga. Quando carregado em ordem, 15/16 de cada bloco é preenchido (isso é mencionado em algum lugar nos documentos). Após o churn, o intervalo pode ser facilmente preenchido de 50 a 100%; um BTree gravita para 69% cheio (daí os 1,45 na outra postagem).

Reservando uma quantidade igual de espaço para backup...
  • Não sei se é isso que eles estão fazendo.
  • Se eles usam mysqldump (ou similar), não é uma fórmula segura -- o texto dump do banco de dados pode ser significativamente maior ou menor.
  • Se eles usam LVM, eles têm espaço para um dump binário completo. Mas isso não faz sentido por causa do COW.
  • (Então, desisto do terceiro trimestre.)

O serviço Cloud poderia estar fazendo algum tipo de compressão?