La diferencia probablemente se deba a la configuración de innoDB, que requiere un ajuste un poco mayor que myISAM. La idea de innoDB es mantener la mayoría de sus datos en la memoria, y limpiar/leer en el disco solo cuando tiene unos pocos ciclos de CPU de repuesto.
si te molestas con InnoDB es una muy buena pregunta. Si vas a seguir utilizando MySQL, es muy recomendable que obtengas algo de experiencia con InnoDB. Pero si está haciendo un trabajo rápido y sucio para una base de datos que no verá mucho tráfico y no le preocupa la escala, entonces la facilidad de MyISAM puede ser una gran ventaja para usted. InnoDB puede ser excesivo en muchos casos donde alguien simplemente quiere una base de datos simple.
pero muchos de mis cuadros no se actualizará
Todavía se puede conseguir una elevación del rendimiento de InnoDB si usted está haciendo la lectura% 99. Si configura el tamaño de su grupo de búferes para mantener su base de datos completa en la memoria, InnoDB NUNCA tendrá que ir al disco para obtener sus datos, incluso si pierde el caché de consultas de MySQL. En MyISAM, existe una buena posibilidad de que tenga que leer la fila del disco y abandone el sistema operativo para realizar el almacenamiento en caché y la optimización.
innodb-buffer-piscina de tamaño
Mi primera suposición es comprobar innodb_buffer_pool_size que se distribuye fuera de la caja ajustado a 8M. Se recomienda tener esto alrededor del 80% de su memoria total. Una vez que llegue a ese límite, el rendimiento de InnoDB se reducirá de manera significativa debido a que necesita para eliminar algo de la memoria intermedia para dejar espacio a los nuevos datos, que pueden ser costosos
confirmación automática = 0
Además, asegúrese de confirmación automática está se apaga mientras carga su mesa, o se producirá un enrojecimiento en cada inserción. Puedes volver a encenderlo cuando hayas terminado, y es una configuración del lado del cliente. muy seguro.
Cargando tablas normalmente ocurre una vez
pensar si realmente desea optimizar su base de datos para dar cabida a "la inserción de 17 millones de filas". ¿Con qué frecuencia haces esto? MyISAM puede ser más rápido en este caso, pero cuando tiene 100 conexiones simultáneas todas leyendo y modificando esta tabla al mismo tiempo, encontrará que innoDB bien afinado ganará y MyISAM se bloqueará en los bloqueos de la mesa.
Cómo MyISAM ve esta operación
MyISAM va a ser muy bueno en esto sin ningún tipo de puesta a punto, ya que bajo las mantas, usted es simplemente añadiendo cada fila en un archivo (y la actualización de un índice). Su sistema operativo y el almacenamiento en caché de disco manejarán todos esos problemas de rendimiento.
Cómo InnoDB ve esta operación
innodb sabrá la tabla necesita una escritura, por lo que lanza la fila en el buffer de inserciones. No le da tiempo antes de la próxima inserción, por lo que innoDB no tiene tiempo para tratar con el búfer, se queda sin espacio y se ve obligado a 'mantener' la inserción mientras escribe en el grupo de búferes y actualiza los índices. A continuación, su grupo de búferes se llena, e innoDB se ve obligado a 'mantener' la inserción y eliminar algunas páginas del grupo de búferes en el disco. Y sigues tirando inserciones como loco. Tenga en cuenta que cuando sintonice InnoDB para darle un prompt de MySQL> muy rápido después de hacer esto, InnoDB seguirá luchando por debajo de las cobijas para ponerse al día en su tiempo libre, pero estará dispuesto a ejecutar una nueva transacción para usted.
debe decir:
http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/
http://dev.mysql.com/doc/refman/5.0/en/innodb-tuning.html (ver Consejos para cargar datos en bloque)
solamente utilizo InnoDB cuando estoy trabajando con tablas relacionales. De lo contrario, si no tiene ninguna clave externa, MyISAM es lo que prefiero. –
solo para señalar, hay un índice en ambas tablas. la tabla "principal" es actualmente myisam. – nick
ben, me gustaría usar tablas relacionales, pero trataré con posiblemente cientos de millones de filas; también necesito indexar docenas de columnas, así que no sé en qué dirección ir. la integridad no es un gran problema. no para esta parte al menos. – nick