sql >> Base de Datos >  >> RDS >> Mysql

Diferencia en el tiempo requerido para insertar registros InnoDB/MyISAM

No está claro qué configuración de durabilidad ha habilitado en MyISAM o Innodb, ni si está utilizando inserciones de una sola fila o inserciones por lotes en cualquier caso.

Si está utilizando inserciones de una sola fila, no está utilizando transacciones y tiene habilitada la durabilidad (la configuración predeterminada en InnoDB), entonces es probable que vea el rendimiento de InnoDB severamente limitado por el requisito de enviar cada transacción a un almacenamiento duradero ( es decir, disco) después de cada inserción de fila.

MyISAM no tiene ese problema, porque de todos modos no es duradero, es decir, si la máquina falla, tiene más o menos la garantía de perder algunos datos escritos recientemente que la base de datos había afirmado previamente que se escribieron correctamente (¡si no toda la tabla!).

Si desea un rendimiento de inserción decente, use inserciones y/o transacciones por lotes; de lo contrario, solo está midiendo la velocidad de una escritura seguida de un fsync (), que (en un controlador RAID sin respaldo de batería en medios magnéticos rotativos) es solo la velocidad de giro de tu disco.

Entonces, la razón por la que innodb es tan consistente es que estás midiendo la velocidad de giro de tu disco.

Habiendo dicho eso, si tiene un servidor ocupado, definitivamente, absolutamente, desea usar un controlador RAID respaldado por batería, entonces puede lograr un rendimiento de compromiso de transacción decente Y una durabilidad adecuada (suponiendo que la energía no falle por más tiempo de lo que dura la batería, y el servidor no explota, etc.).