2012-04-30 15 views
16

Después de reparar mi base de datos que he recibido el siguiente error:El motor de almacenamiento de la tabla no es compatible con la reparación. InnoDB o MyISAM?

scode_tracker.ap_visits 
note  : The storage engine for the table doesn't support repair 
scode_tracker.visit_length 
note  : The storage engine for the table doesn't support repair 

descubrí que el tipo de tabla es InnoDB. La otra mesa era MyISAM y se reparó con éxito.

Después de leer algún tema aquí, la solución es cambiarlo a MyISAM. No sé mucho sobre InnoDB y MyISAM. No especifico el tipo cuando creé la tabla. Entonces, ¿mi pregunta es si debo usar MyISAM en lugar de InnoDB? En caso afirmativo, ¿cómo puedo cambiarlo de InnoDB a MyISAM?

+2

No es necesario para reparar una tabla InnoDB (http://stackoverflow.com/questions/1998777/what-to-do-when-repair-table- query-wont-work-in-mysql) – Ben

+0

Lea también este http://stackoverflow.com/questions/4251179/mysql-innodb-vs-myisam – Ben

Respuesta

9

Primero es necesario entender la diferencia entre MyISAM y InnoDB Engines. Y esto está claramente establecido en este link. Se puede utilizar esta instrucción SQL si desea InnoDB convertido al MyISAM:

ALTER TABLE t1 ENGINE=MyISAM; 
+10

Enlace ahora roto (sitio protegido de wordpress) – GlennG

10

InnoDB funciona de forma ligeramente diferente que MyISAM y ambos son opciones viables. Debe usar lo que crea que se ajusta al proyecto.

Algunos puntos clave serán:

  1. InnoDB transacciones ACID-compatible. http://en.wikipedia.org/wiki/ACID
  2. InnoDB integridad referencial (relaciones de clave externa) http://www.w3resource.com/sql/joins/joining-tables-through-referential-integrity.php
  3. myisam qué la búsqueda de texto completo, InnoDB no lo hace
  4. Me han dicho InnoDB es más rápido en las escrituras de ejecución, pero más lento que hacer MyISAM lee (no puedo volver esto y no pude encontrar ningún artículo que analice esto, sin embargo, tengo al tipo que me dijo esto en alta estima), no dude en ignorar este punto o hacer su propia investigación.
  5. La configuración predeterminada no funciona muy bien ya que InnoDB necesita ajustarse en consecuencia, ejecute una herramienta como http://mysqltuner.pl/mysqltuner.pl para ayudarlo.

Notas:

  • En mi opinión, el segundo punto es probablemente el que fueron InnoDB tiene una gran ventaja sobre MyISAM.
  • La búsqueda de texto completo no funciona con InnoDB es un poco molesto, puede mezclar diferentes motores de almacenamiento, pero tenga cuidado al hacerlo.

Notes2: - Estoy leyendo este libro "MySQL alto rendimiento", dice el autor "carga datos InnoDB y crea índices más lentamente que MyISAM", esto también podría ser un factor muy importante a la hora de decidir qué usar.

1

Tiene una tabla incorrecta configurada en el comando. Se debe utilizar la siguiente en su configuración:

ALTER TABLE scode_tracker.ap_visits ENGINE=MyISAM; 
Cuestiones relacionadas