2011-12-01 12 views
14

¿Cuál es el mejor motor de almacenamiento para usar en una tabla de registro en mysql?Motor de almacenamiento Mysql para la tabla de registro

La tabla tendrá un par si los campos id (ints) un campo de fecha, un varchar para el nivel de mensaje y un campo de texto con el mensaje.

Se registrará todo tipo de cosas, acciones del usuario, eventos del sistema, etc. Se espera que crezca enorme rápidamente.

Los registros en él nunca serán modificados y rara vez se accede a ellos. Cuando se accede, se debe ordenar por nivel de fecha e id.

Una opción interesante es el motor de archivo. Cumple con todos los criterios, pero tiene un gran inconveniente: no solo no se pueden borrar los registros, la tabla ni siquiera se puede purgar. La única manera de borrar la tabla es eliminarla y volver a crearla.

¿Alguna sugerencia?

Respuesta

23

Bueno, de acuerdo a su pregunta, InnoDB debe hacer el trabajo porque:

  1. Es escalabilidad es mucho mejor que MyISAM
  2. Es fila de bloqueo, por lo tanto, si usted va a tener más escrituras que selecciona, se ajusta mejor.
  3. Finalmente, como ha dicho que rara vez se accederá a ellos, no es necesario tener MyISAM, ya que es mejor para seleccionar consultas.

Check this for more information

EDITAR

Bueno, en el comentario de preguntar acerca de otros motores. Aquí hay un full list de motores. Entre ellos, como dijiste que el archivo tiene una desventaja, los otros no se ajustan a tu solicitud. Aquí es una cita del sitio web de MySQL:

InnoDB has been designed for maximum performance when processing large data volumes. 
Its CPU efficiency is probably not matched by any other disk-based relational database 
engine. 

Así que, básicamente:

  1. Si va a utilizar la memoria no se como usted ha dicho que no va a acceder a los datos mucho y su tabla crecer demasiado Necesitará mucha RAM para eso y cuando reinicie todos los datos se perderán.
  2. Si va a utilizar MyISAM, no, ya que está diseñado para tablas que seleccionan consultas son más frecuentes que insertar y actualizar.
  3. En cuanto al archivo, esa es su elección. Here es una comparación entre MyISAM y el archivo para una tabla de registro. Me quedaría con InnoDB sin embargo.
  4. Ni siquiera mencionaré Merge, Blackhole, Example y otros motores. (No tengo mucho conocimiento sobre el motor CSV, pero hasta donde he leído, no es un motor apropiado para este tipo de tabla.

Para ser sincero, solía gastar una gran cantidad de tiempo antes de hacer un movimiento importante en la codificación. Investigué durante horas, tal vez durante días sobre un problema, para ver cuál es la más apropiada. Te diré una cosa, investigar es bueno, pero después de un punto si te impide trabajar entonces deberías detenerte, tomar un café y hacer tu elección de inmediato. Por lo tanto, prueba con la más adecuada para ti y, como experimentarás, encontrarás una mejor manera, intentándote a ti mismo.Quiero decir, no creo que Facebook haya sido diseñado para tal volumen, pero a medida que creció, continuaron cambiando la estructura en consecuencia. Sin embargo, eso es lo que creo, puede que no sea la realidad :) De todos modos, espero que la información te ayude.

EDITAR 2013

A continuación encontrará descripciones breves para incorporado en los motores de almacenamiento de MySQL.

MyISAM

Estas tablas incluyen optimizaciones adicionales, tales como mecanismos de caché e indexación avanzadas, que proporcionan acceso rápido a los datos. Mediante el bloqueo a nivel de tabla, el motor de almacenamiento MyISAM proporciona operaciones concurrentes. Cuando el rendimiento de lectura es una preocupación, generalmente, MyISAM es la elección.

memoria

También llamadas tablas de montón, tablas de memoria son ideales para retrievel rápida de datos de uso frecuente que rara vez se altera (por ejemplo, códigos de país, códigos postales u otras tablas de búsqueda). Como su nombre indica, los datos se almacenan en la memoria y, por lo tanto, el acceso es mucho más rápido que los datos almacenados en los discos. Una restricción importante para usar la memoria es que los datos son válidos durante la sesión de MySQL. Cuando se bloquea o se apaga, la información se pierde.

InnoDB

Un caso en el que tendrá que utilizar este motor de almacenamiento es cuando es necesario utilizar llaves o transacciones con el exterior. InnoDB es más concurrente que MyISAM, ya que proporciona bloqueo a nivel de fila. El motor de almacenamiento es altamente confiable. Otro caso en el que querrá usar este almacenamiento es cuando tiene más escrituras que lecturas. Cuando escribe con frecuencia datos en la tabla, intente utilizar este almacenamiento, ya que es más concurrente que MyISAM.

Archivo

Está diseñado para almacenar grandes cantidades de datos en un formato comprimido. Uno de los casos de uso de este motor de almacenamiento es almacenar datos de archivo o históricos o registros de seguridad. La tabla no utiliza índices, por lo que para la recuperación y el almacenamiento diario de datos no es una buena opción. Se trata de un bloqueo a nivel de fila y los datos se descomprimen sobre la marcha cuando se solicitan. Además, no es posible alterar la tabla.

Combinar

Combinar se utiliza para fusionar '' tablas con particiones que se encuentran en la misma máquina. Cuando divide una tabla grande en varias tablas más pequeñas y accede a ellas simultáneamente usando una tabla de combinación, el mayor beneficio es su velocidad. Las búsquedas y géneros se ejecutarán más rápido ya que hay menos datos en las tablas.

+0

Si la elección fue entre MyISAM e InnoDB, la elección sería fácil. ¿Qué hay de otros motores de almacenamiento? ¿InnoDB es el mejor equipado de todos? – applechief

+0

@chaft He editado la respuesta, por favor, vea :) –

+0

Gracias, este informe me salvó el día :) – Sal00m

Cuestiones relacionadas