Rendimiento de las declaraciones de inserción de MySQL en Java: instrucciones preparadas en modo por lotes frente a una única inserción con múltiples valores
Estoy diseñando unMySQL
base de datos que necesita manejar aproximadamente 600 inserciones de fila por segundo en varias tablas InnoDB. Mi implementación actual utiliza declaraciones preparadas no por lotes. Sin embargo, escribiendo a laMySQL
Los cuellos de botella de la base de datos y el tamaño de mi cola aumentan con el tiempo.
La implementación está escrita en Java, no sé la versión a mano. UsaMySQL
esConector de Java. Necesito mirar para cambiar aJDBC
mañana. Supongo que estos son dos paquetes de conectores diferentes.
He leído los siguientes hilos sobre el tema:
Optimización de inserciones de MySQL para manejar un flujo de datosMyISAM contra InnoDBInsertar datos binarios en MySQL (sin PreparedStatement)y desde el sitio mysql:
http://dev.mysql.com/doc/refman/5.0/en/insert-speed.htmlMis preguntas son:
¿Alguien tiene algún consejo o experiencia sobre las diferencias de rendimiento utilizando INSERTs con declaraciones preparadas en modo de lotes en lugar de usar una sola?INSERT
Declaración con múltiples valores.
¿Cuáles son las diferencias de rendimiento entre losMySQL
Conector de Java vs.JDBC
. ¿Debo estar usando uno o el otro?
Las tablas son para propósitos de archivo, y verán ~ 90% de escritura a ~ 10% de lectura (tal vez incluso menos). Estoy usando InnoDB. ¿Es esta la elección correcta sobre MyISAM?
Gracias de antemano por su ayuda.