2010-12-16 9 views
6

Sé que hay a bunch of other questions en esto. El problema que estoy teniendo es encontrar un consenso al día sobre el tema con respecto a las últimas versiones de los motores de almacenamiento.¿Las comparaciones entre InnoDB y MyISAM aún son válidas en términos de velocidad de lectura frente a escritura?

Algunas personas han dicho que para leer MyISAM es más rápido, pero las mejoras "recientes" en InnoDB han aliviado o erradicado esta diferencia. Es ese el caso?

This article en MYSQL Rendimiento Blog se vincula a un montón, tanto directamente como de otros artículos que se han vinculado a las preguntas aquí, pero tiene 3 años. Somos desarrolladores, prácticamente trabajamos en años de perro: ¡3 años es una EDAD!

-

que tienen una serie de tablas, algunos de los cuales están escritos en su mayoría hacia y algunos de los cuales se leen en su mayoría de y casi nunca escribir en él. También hay muchas claves externas que requieren InnoDB de todos modos, por lo que permanecerán como InnoDB, pero me gustaría saber si estoy en lo cierto al cambiar las tablas de las que se lee principalmente y no tienen claves externas a MyISAM, o si esto es algo inútil que hacer, con las últimas versiones de los dos motores de almacenamiento que se utilizan?

-

Soy consciente de que esto puede ser votada a ser cerrado, pero si al hacerlo por favor, que puedan vincular a un artículo hasta la fecha? Ya he intentado una búsqueda en Google restringida por un período de tiempo, pero los artículos están vinculados a los mismos artículos anteriores. Gracias.

Respuesta

7

Como usted señala, el artículo en MySQL Performance Blog tiene casi 4 años. Desde entonces, InnoDB ha mejorado mucho. MyISAM no lo era.

Ayer mismo se lanzó MySQL 5.5. Es la primera versión donde InnoDB es el motor de almacenamiento predeterminado. Por una razón. Oracle afirma tanto como 3.5 ganancias de rendimiento para Linux y hasta 15 veces las ganancias de rendimiento para Windows (en comparación con 5.1 InnoDB).

2

Yo diría que casi no hay diferencia. Leí un artículo recientemente, que disipó este mito, pero sady, parece que ya no funciona.

De todos modos, yo creo que la descision entre MyISAM e InnoDB ahora descansa principalmente en las preguntas

  • ¿Necesita trabajar con claves externas?
  • Necesita el nivel de tabla o el nivel de fila de bloqueo.

Al menos, estos son los principios en los que baso mis decisiones.

+0

¿Qué hay de las transacciones de ACID? Yo diría que esta es la razón principal detrás de elegir InnoDB. – Mchl

+0

Dado que generalmente estoy trabajando con aplicaciones web, esto generalmente no es una gran preocupación, pero sí, ¡es un gran punto! Si necesita la máxima fiabilidad y consistencia, InnoDB es probablemente su mejor opción. ¡Gracias Mchl por señalar eso! –

+0

¿Por qué necesitaría un bloqueo de nivel de tabla en lugar de un bloqueo de nivel de fila? ¿Podría dar un ejemplo cuando ese sería el caso? En mi opinión, InnoDB es casi siempre la mejor opción. Excepto cuando necesita una búsqueda de texto completo. –

1

En general, parece que el consenso es utilizar principalmente InnoDB, pero todavía hay algunas áreas en las que MyIsam es mucho más rápido que InnoDB. Tengo un sitio web que enumera las horas de Running Races y crea un registro para cada atleta www.marastat.com. Nuestro sitio tiene en el rango de millones de atletas. Agregamos una función de búsqueda e hicimos una búsqueda similar en los nombres/apellidos y descubrimos que al usar InnoDB y un índice, se tardaba más de un minuto en completar algunas búsquedas. Hicimos un duplicado de la tabla InnoDB y agregamos índices de texto completo en la versión de MyIsam y la mayoría de las consultas pueden completarse en uno o dos segundos.

Cuestiones relacionadas