Si sus consultas están insertos, la página 7.2.19. Speed of INSERT Statements del manual de MySQL proporciona dos informaciones interesantes, dependiendo de si su están utilizando un motor de transactionnal o no:
Cuando se utiliza un motor no transactionnal:
Para acelerar las operaciones de INSERT que son realizadas con varias instrucciones para tablas no transaccionales, bloquee sus tablas .
Esto beneficia el rendimiento porque el búfer de índice es vuelca en disco única una vez, después de que todas las instrucciones INSERT tienen completado. Normalmente, habría como muchas descargas de búfer de índice ya que hay sentencias INSERT. Las instrucciones explícitas de bloqueo no son necesarias si puede insertar todas las filas con un solo INSERT.
Y, con un motor transactionnal:
Para obtener inserciones más rápidas para tablas transaccionales, se debe utilizar START TRANSACTION y COMMIT lugar de LOCK TABLES.
Supongo que usar transacciones puede ser una buena idea, pero supongo que eso podría depender de la carga de su servidor, y si hay múltiples usos usando la misma tabla en el mismo momento, y todo eso ...
Hay más información sobre la página que está conectado, por lo que no dudan en leerlo ;-)
Y, si usted está haciendo update statements:
Otra forma de obtener actualizaciones rápidas es actualizar las demoras y luego hacer muchas actualizaciones en una fila más adelante. La ejecución de múltiples actualizaciones juntas es mucho más rápida que haciendo una a la vez si bloquea la tabla .
Así que, supongo que se puede decir lo mismo que con insertos.
Por cierto: para estar seguro, se puede tratar ambas soluciones, la evaluación comparativa con microtime
, en el lado de PHP, por ejemplo ;-)
Muchas gracias por la información, supongo que tendré que probar y comparar. – jeroen
Supongo que sí ^^ Déjenos saber sobre los resultados ;-) ¡Podría interesar a otras personas! Y, por cierto, otra solución sería usar una consulta de inserción para hacer varias inserciones al mismo tiempo, reduciendo el número total de consultas, un poco más difícil de codificar, pero he visto grandes mejoras con eso, ya que significa menos llamadas de un servidor a otro. –
Sí, reducir el número de consultas sería la mejor solución, pero como mencioné a James Black también, nunca lo he intentado con INSERT ON DUPLICATE KEY UPDATE, ni siquiera sé si es posible. – jeroen