2011-09-06 26 views
6

Tengo una base de datos de aplicaciones con una tabla para usuarios (1kbyte de datos por usuario basado en campos de conteo * longitud de letras) y aproximadamente 100 cosas del mismo tamaño pertenecientes a un usuario (0.5 kbyte por cosa) y está en una tabla de "usuario" y una tabla de "cosa".Estimación de tamaño de base de datos MySQL

Eso parecería conducir a aproximadamente 51kbytes de datos por usuario. Sin embargo, he escuchado que para MySQL, debería doblarlo para cubrir tablas de índice, lo que me llevaría a 102 kbytes/usuario. ¿Es cierto? ¿Hay otros factores de expansión de datos a considerar para MySQL, o es 102 kbytes una buena estimación?

Además del factor de indexación (que creo que es 2) y la eficiencia de almacenamiento (que también creo que es 2), ¿hay otros multiplicadores para el almacenamiento de datos en MySQL?

+0

¿Qué motor de base de datos está utilizando? ¿Quieres números reales o estimaciones? Puede usar TABLE STATUS para obtener el tamaño real de cada tabla en bytes. Es posible que pueda extrapolar a partir de eso y obtener estimaciones realistas de los números. –

+0

Estoy usando innodb para el almacenamiento. –

+0

http://dev.mysql.com/doc/refman/5.0/en/innodb-disk-management.html analiza la utilización del disco InnoDB hasta cierto punto, pero sin conocer su propósito, no estoy seguro de cómo calcularlo mejor o estimar el uso del disco –

Respuesta

2

Respuesta corta
aumento Tamaño 2-3x más de MyISAM es común, 4x es raro.

Todo sobre el motor InnoDB:
http://dev.mysql.com/doc/refman/5.1/en/innodb-storage-engine.html

InnoDB, MyISAM y espacio en disco:
http://mysqlha.blogspot.com/2009/01/innodb-myisam-and-disk-space_16.html

MySQL comparación motores de uso del espacio:
Parte 1: http://marksverbiage.blogspot.com/2008/02/mysql-engines-and-space-usage.html
Parte 2: http://marksverbiage.blogspot.com/2008/04/mysql-engines-space-usage-comparison.html

Aquí está la estructura de fila física :
http://dev.mysql.com/doc/refman/5.0/en/innodb-physical-record.html

Hay una gran cantidad de variables y cuestiones:

  • Índices, recuerde InnoDB incluye el PK en cada índice secundario.
  • ¿Está empacando llaves (lento)?
  • ¿La tabla es redundante?
  • No olvide los registros (registro binario, registro de consultas lentas, registro de errores ...)
  • Las filas están declaradas como anulables, de ser así, agregue un byte extra por columna que admite nulos por fila.
  • ¿Qué juego de caracteres está usando?
Cuestiones relacionadas