MyISAM versus InnoDB [cerrado]

Resuelto user2013 asked hace 16 años • 0 respuestas

Estoy trabajando en un proyecto que implica muchas escrituras en bases de datos, diría yo ( 70% de inserciones y 30% de lecturas ). Esta proporción también incluiría actualizaciones que considero que son una lectura y una escritura. Las lecturas pueden estar sucias (por ejemplo, no necesito información 100% precisa en el momento de la lectura).
La tarea en cuestión realizará más de 1 millón de transacciones de bases de datos por hora.

He leído un montón de cosas en la web sobre las diferencias entre MyISAM e InnoDB, y MyISAM me parece la opción obvia para las bases de datos/tablas particulares que usaré para esta tarea. Por lo que parece estar leyendo, InnoDB es bueno si se necesitan transacciones ya que se admite el bloqueo a nivel de fila.

¿Alguien tiene alguna experiencia con este tipo de carga (o superior)? ¿Es MyISAM el camino a seguir?

user2013 avatar Aug 21 '08 21:08 user2013
Aceptado

He discutido brevemente esta pregunta en una tabla para que pueda concluir si debe optar por InnoDB o MyISAM .

Aquí hay una pequeña descripción general de qué motor de almacenamiento de base de datos debe usar en cada situación:

                                                 MyISAM InnoDB
-------------------------------------------------- --------------
Búsqueda de texto completo requerida Sí 5.6.4
-------------------------------------------------- --------------
Requerir transacciones Sí
-------------------------------------------------- --------------
Consultas de selección frecuentes Sí      
-------------------------------------------------- --------------
Inserción, actualización y eliminación frecuentes Sí
-------------------------------------------------- --------------
Bloqueo de filas (procesamiento múltiple en una sola tabla) Sí
-------------------------------------------------- --------------
Diseño de base relacional Sí

Resumen

  • En casi todas las circunstancias, InnoDB es el mejor camino a seguir
  • Pero, lectura frecuente, casi nada de escritura, use MyISAM
  • Búsqueda de texto completo en MySQL <= 5.5, use MyISAM
developer99 avatar Jul 22 '2011 22:07 developer99

No soy un experto en bases de datos y no hablo por experiencia. Sin embargo:

Las tablas MyISAM utilizan bloqueo a nivel de tabla . Según sus estimaciones de tráfico, tiene cerca de 200 escrituras por segundo. Con MyISAM, solo uno de estos podría estar en progreso en cualquier momento . Debe asegurarse de que su hardware pueda mantenerse al día con estas transacciones para evitar que se sobrecargue, es decir, una sola consulta no puede tardar más de 5 ms.

Eso me sugiere que necesitaría un motor de almacenamiento que admita el bloqueo a nivel de fila, es decir, InnoDB.

Por otro lado, debería ser bastante trivial escribir algunos scripts simples para simular la carga con cada motor de almacenamiento y luego comparar los resultados.

rix0rrr avatar Aug 22 '2008 16:08 rix0rrr